Python: Parameterized Tests¶
abstract: | When you have a list and you want to run the same test function for each item in the list. |
---|
minipyt¶
import pandokia.helpers.pycode as pycode
p_list = [
( 'nameA', 'v1', 'v2' ),
( 'nameB', 'va', 'vc' ),
]
for name, v1, v2 in p_list :
with pycode.test(name) :
assert foo(v1, v2)
The tests will be named nameA
and nameB
py.test¶
import pytest
p_list = [
( 'nameA', 'v1', 'v2' ),
( 'nameB', 'va', 'vc' ),
]
@pytest.mark.parametrize( ('name', 'v1', 'v2'), p_list)
def test_thing(name, v1, v2) :
assert foo(v1,v2)
The tests will be named test_thing[nameA-v1-v2]
and
test_thing[nameB-va-vc]
Take notice that the spelling of “parametrize” does not contain an “e” before the “r”.
nose¶
p_list = [
( 'nameA', 'v1', 'v2' ),
( 'nameB', 'va', 'vc' ),
]
def run_it( v1, v2 ) :
assert foo(v1,v2)
def test_thing() :
for name, v1, v2 in p_list :
yield run_it, v1, v2
The tests will be named test_thing('v1',_'v2')
and
test_thing('va',_'vc')