python_wrap_cases 0.1.8

Last updated:

0 purchases

python_wrap_cases 0.1.8 Image
python_wrap_cases 0.1.8 Images
Add to Cart

Description:

python wrap cases 0.1.8

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


@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


Installation
pip install python_wrap_cases
Free software: BSD license
Documentation: https://python_wrap_cases.readthedocs.org.


History


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)

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.