Pytest,测试前修改加载json文件
Pytest, modify and load json file before testing
@pytest.fixture(scope="function",
params=load_json("path_to_json.json"))
def valid_data(self, request):
return request.param
这就是我的一项测试中的一个装置 class。它们包含我预期的测试数据。在每次测试之前,我需要修改那些 json 文件。
@pytest.fixture(scope="session", autouse=True)
def prepare_file():
// Doing the change and writing it to the json file
但是当我 运行 测试时,文件似乎没有得到更新。但是当测试完成时。它们已更新。怎么了 ?
你应该明白的一些事情:
- 如果你想在另一个里面使用一个,你的夹具范围肯定需要匹配
- 如果您传递其他灯具,您的个人灯具可以访问它们
我不确定这是否能解决您的问题,但是:
import json
@pytest.fixture(scope="function"):
def output_json_filepath():
return 'path/to/file'
@pytest.fixture(scope="function"):
def json_data(request):
return request.param
@pytest.fixture(scope="function"):
def prepared_data(json_data):
# do something here?
return prepared_data
# Not sure why you need this...
@pytest.fixture(scope="function"):
def dump_data(prepared_data, output_json_filepath):
with io.BytesIO(output_json_filepath, 'wb') as stream:
stream.write(prepared_data)
...
@pytest.mark.unit_test
def some_test(prepared_data):
# use your prepared_data here in your test.
@pytest.fixture(scope="function",
params=load_json("path_to_json.json"))
def valid_data(self, request):
return request.param
这就是我的一项测试中的一个装置 class。它们包含我预期的测试数据。在每次测试之前,我需要修改那些 json 文件。
@pytest.fixture(scope="session", autouse=True)
def prepare_file():
// Doing the change and writing it to the json file
但是当我 运行 测试时,文件似乎没有得到更新。但是当测试完成时。它们已更新。怎么了 ?
你应该明白的一些事情:
- 如果你想在另一个里面使用一个,你的夹具范围肯定需要匹配
- 如果您传递其他灯具,您的个人灯具可以访问它们
我不确定这是否能解决您的问题,但是:
import json
@pytest.fixture(scope="function"):
def output_json_filepath():
return 'path/to/file'
@pytest.fixture(scope="function"):
def json_data(request):
return request.param
@pytest.fixture(scope="function"):
def prepared_data(json_data):
# do something here?
return prepared_data
# Not sure why you need this...
@pytest.fixture(scope="function"):
def dump_data(prepared_data, output_json_filepath):
with io.BytesIO(output_json_filepath, 'wb') as stream:
stream.write(prepared_data)
...
@pytest.mark.unit_test
def some_test(prepared_data):
# use your prepared_data here in your test.