这对我来说很难在 pytest 文档中找到。所以我才来这里问。
我有一个正在加载数据的夹具。
import pytest
@pytest.fixture(scope="function")
def param_data(request):
with open(f'tests/fixtures/{request.param}.json') as f:
return json.load(f)
因此,我想测试 3 个 JSON 文件的函数的执行情况:
如何使用
@pytest.mark.parametrize
做到这一点?我的意思是...
@pytest.mark.parametrize(???)
def test_my_function(dict, expected):
# Test my_function() with the dict loaded by fixture and the expected result.
assert my_function(dict) == expected
我看到了两种用法的示例,但没有同时看到这两种用法。 而且,我看到的所有灯具都是通过值返回来固定的,而不是使用
request.param
。
使用间接参数化以及“正常”参数。
import pytest
@pytest.fixture
def add_one(request):
return 1 + request.param
@pytest.mark.parametrize("add_one,expected", ((2, 3), (4, 5)), indirect=["add_one"])
def test_my_func(add_one, expected):
assert add_one == expected