【发布时间】:2020-09-20 21:38:00
【问题描述】:
我正在尝试自学 Pytest,并尝试了解使用 @pytest.fixture(params=[]) 和 @pytest.mark.parametrization() 参数化测试数据之间的区别。我已经设置了下面的代码来查看两者是如何工作的并且它们都返回相同的结果。但是,我不确定是否存在一种方法优于另一种方法的用例。使用其中一个有什么好处吗?
import pytest
@pytest.fixture(params=["first parameter", "second parameter", "third parameter"])
def param_fixture(request):
return request.param
def parametrize_list():
return ["first parameter", "second parameter", "third parameter"]
def test_using_fixture_params(param_fixture):
"""Tests parametrization with fixture(params=[])"""
assert "parameter" in param_fixture
@pytest.mark.parametrize("param", parametrize_list())
def test_using_mark_parametrize(param):
"""Tests parametrization with mark.parametrize()"""
assert "parameter" in param
以上代码有如下结果。
test_parametrization.py::test_using_fixture_params[first parameter] PASSED
test_parametrization.py::test_using_fixture_params[second parameter] PASSED
test_parametrization.py::test_using_fixture_params[third parameter] PASSED
test_parametrization.py::test_using_mark_parametrize[first parameter] PASSED
test_parametrization.py::test_using_mark_parametrize[second parameter] PASSED
test_parametrization.py::test_using_mark_parametrize[third parameter] PASSED
【问题讨论】:
标签: python parameters pytest fixtures