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

但是当我 运行 测试时,文件似乎没有得到更新。但是当测试完成时。它们已更新。怎么了 ?

你应该明白的一些事情:

  1. 如果你想在另一个里面使用一个,你的夹具范围肯定需要匹配
  2. 如果您传递其他灯具,您的个人灯具可以访问它们

我不确定这是否能解决您的问题,但是:

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.