Skip to content
Advertisement

parametrize and running a single test in pytest

How can I run a single test out of a set configured with parametrize? Let’s say I have the following test method:

@pytest.mark.parametrize(PARAMETERS_LIST, PARAMETERS_VALUES)
def test_my_feature(self, param1, param2, param3):
    """
    test doc
    """
    if param1 == 'value':
        assert True
    else:
        print 'not value'
        assert False

I have 3 parameters, and I generate a list of 15 different possible values for them, to test the function on.

How can I run just one of them? except for the obvious way – giving a single value instead of 15.

Advertisement

Answer

You can specify the tests to run by using the -k flag for filtering tests that match a string expression. When using parametrize, pytest names each test case with the following convention:

test_name[‘-‘ separated test inputs]

for example

test_name[First_test_value-Second_test_value-N_test_value]

Selecting an specific test to run is a matter of putting all the above together for example

pytest -k 'my_test[value_1-value_2]'

or

pytest -k my_test[value_1-value_2]

You need to escape the square brackets.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement