Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

Simple library for generate test cases.

Project description

Join the chat at Documentation Status

Simple library for generate test cases with parameters.

What is this?

This library helps to generate tests with parameters.

Let’s write some tests for this function:

import re

def clear_start_end_dash(string):
    return re.sub(r'^[\s\-]*-|-[\s\-]*$', '', string)

We may write something like this:

from unittest import TestCase

class ClearStartEndDashTest(TestCase):

    def test_remove_first_dash(self):
        result = clear_start_end_dash('-my string')
        self.assertEqual(result, 'my string')

    def test_remove_all_first_dashes(self):
        result = clear_start_end_dash('-  -- --my string')
        self.assertEqual(result, 'my string')

    def test_remove_last_dash(self):
        result = clear_start_end_dash('my string-')
        self.assertEqual(result, 'my string')

    def test_remove_all_last_dashes(self):
        result = clear_start_end_dash('my string-- -- -- - ')
        self.assertEqual(result, 'my string')

    def test_keep_dash_at_center(self):
        result = clear_start_end_dash('my-string')
        self.assertEqual(result, 'my-string')

It’s good, but we spent a lot of time to write those absolutely the same test functions.

So let’s decrease the number of duplicate functions:

from unittest import TestCase

class ClearStartEndDashDryTest(TestCase):

    def test_remove_dash(self):
        cases = (
            ('-my string', 'my string'),
            ('-  -- --my string', 'my string'),
            ('my string-', 'my string'),
            ('my string-- -- -- - ', 'my string'),
            ('my-string', 'my-string')
        for string, expected_result in cases:
            result = clear_start_end_dash(string)
            self.assertEqual(result, expected_result)

This code has a few problems:

  • Easy to write but difficult to read.
  • We can’t use test fixture (setUp, tearDown) with each case.
  • If some case fails, the other cases won’t run.
  • If test test_remove_dash fails, it won’t help us find out what happened.

Look how easy we may solve these problems using this library:

from unittest import TestCase
from python_wrap_cases import wrap_case

class ClearStartEndDashWrapTest(TestCase):

    @wrap_case('-my string', 'my string')
    @wrap_case('-  -- --my string', 'my string')
    @wrap_case('my string-', 'my string')
    @wrap_case('my string-- -- -- - ', 'my string')
    @wrap_case('my-string', 'my-string')
    def test_remove_dash(self, string, expected_result):
        result = clear_start_end_dash(string)
        self.assertEqual(result, expected_result)

This code generates 5 tests, that works like a simple test functions.

Console output:

test_remove_dash_u'-  -- --my string'_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'-my string'_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'my string-'_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'my string-- -- -- - '_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'my-string'_u'my-string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok


pip install python_wrap_cases

Free software: BSD license



0.1.0 (2015-06-26)

  • First release on PyPI.

0.1.2 (2015-06-26)

  • Fix generators import

0.1.3 (2015-06-26)

  • Add some docs

0.1.4 (2015-06-29)

  • ReadMe add semicolon
  • Fix pypi readme

0.1.5 (2015-07-01)

  • README remove ::;

0.1.6 (2015-07-01)

  • Add tests fot python 3.2

0.1.7 (2015-07-10)

  • Add six dependency

0.1.8 (2015-08-21)

  • Add func generator
  • Add range generator
  • Fix problem with iterator in custom generator
  • Add new API for declaration wrapped TestCase. (added wrap_case decorator without parameters)

Project details

Release history Release notifications

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
python_wrap_cases-0.1.8.tar.gz (20.2 kB) Copy SHA256 hash SHA256 Source None Aug 21, 2015

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page