$ pip install nose-test-sets
To define your set of common tests, create a TestSetBuilder, and use
add_test to add tests. Each test should accept the same name of arguments.
Say you define some tests for an adder in the module adder_test_set:
from nose_test_sets import TestSetBuilder
test_set_builder = TestSetBuilder()
test = test_set_builder.add_test
@test
def adding_zero_to_zero_returns_zero(adder):
assert adder.add(0, 0) == 0
@test
def adding_one_to_two_returns_three(adder):
assert adder.add(1, 2) == 3
create = test_set_builder.createTo run the tests against a specific implementation, you create a set of tests
using the create function that we defined above:
import adder_test_set
def _run_test_with_standard_adder(test_func):
adder = StandardAdder()
return test_func(adder)
StandardAdderTests = adder_test_set.create(
"StandardAdderTests",
_run_test_with_standard_adder
)The first argument to create should be the name of the concrete test set.
The second argument is a function that can run each of the test functions.
In the example above, to run the tests in StandardAdderTests, nose-test-sets
ends up calling
_run_test_with_standard_adder(adding_zero_to_zero_returns_zero) and
_run_test_with_standard_adder(adding_one_to_two_returns_three).