pytest-subtests
pytest-subtests copied to clipboard
[feature request] Global subtest function
Currently, when using subtest, one has to propagate the subtest object in each of the submethods, adding boilerplate:
def test_xyz(subtests):
assert_fn(x, y, subtests) # Propagate subtest to all sub functions
def assert_fn(x, y, subtests):
with subtests.test('a'):
with subtests.test('x'):
assert_child_fn(x, subtests) # Additional function with subtests
with subtests.test('y'):
assert_child_fn(x, subtests)
It would be nice if there was instead a global subtest function which could be called directly. The above code could be rewritten as
@pytest.mark.usefixture('subtest')
def test_xyz():
assert_fn(x, y) # No more subtest argument
def assert_fn(x, y):
with pytest.subtest('a'):
with pytest.subtest('x'):
assert_child_fn(x)
with pytest.subtest('y'):
assert_child_fn(x)
Of course, calling pytest.subtests
would raise an error if executed in a test which does not use the subtest fixture.
But this would make it easier to make modular tests function.
If pytest.subtest
is not possible, import subtests
directly would be great too.