Skip to content
Advertisement

unit testing with pytest parametrize

I have the following test code:

class TestMyCode(unittest.TestCase):
    @pytest.mark.parametrize('item', [5,4,10])
    def test_valid_range(self, item):
        self.assertTrue(1 <= item <= 1000)

This is not my real test this is just a minimal reproduce example.

I need to parameterised only the input which is checked against the same code.

For some reason this doesn’t work I always get:

 TypeError: test_valid_range() missing 1 required positional argument: 'item'

How can I fix it?

Advertisement

Answer

You can’t use @pytest.mark.parametrize on unittest.TestCase methods. PyTest has no way to pass in the parameter.

Just do:

@pytest.mark.parametrize('item', [5,4,10])
def test_valid_range(item):
    self.assertTrue(1 <= item <= 1000)
Advertisement