ich eine Testsuite mit einem pytest.fixture
haben, die, wie dies auf andere Vorrichtungen abhängt:Pytest parametrisiert Test, der Befestigung verwendet
@pytest.fixture
def params():
return {'foo': 'bar', 'baz': 1}
@pytest.fixture
def config():
return ['foo', 'bar', 'baz']
@pytest.client
def client(params, config):
return MockClient(params, config)
Für einen normalen Test, ich gehe nur in client
und es funktioniert gut:
Aber für einen parametrisierten Test ist die Verwendung dieser Vorrichtung wirklich umständlich. Sie müssen alle Fixture-Methoden direkt aufrufen, was den Zweck in gewissem Maße zunichte macht. (Ich sollte beachten, dass die params
und config
Fixtures woanders verwendet werden, also möchte ich nicht einfach in client
kollabieren).
@pytest.mark.parametrize('thing,expected', [
(client(params(), config()).method_with_args(arg1, arg2), 100),
(client(params(), config()).method_with_args(arg2, arg4), 200),
])
def test_parameters(thing, expected):
assert thing == expected
Gibt es eine Möglichkeit, dies sauberer zu machen? Ich bin mir nicht sicher, ob dieser unordentliche Code besser ist als wiederholte, ähnliche Tests.