pytest 是否有使用参数化运行的缓存?

时间:2021-05-06 02:28:01

标签: python pytest

以下代码中的

case_id 从上次调用中获取值。如果存在导致此问题的某些功能,我该如何重置或禁用缓存功能?

def setup_class(self):
    global case_id_list
    test_runner = TestRunner()
    case_id_list = test_runner.get_run_List()

@pytest.mark.parametrize('case_id', case_id_list)
def testcase(self, case_id, json_metadata):
    print("case_id in testcase: "+ case_id)
    print("case_id_list in testcase: " + str(case_id_list))

第一次运行日志,本例运行正常:

正在收集……收集了 4 件物品

../testcase_folder/test_runner.py::TestClass::testcase[210426343] get_run_List: testcase_run_list: [210426343, 210426628, 210426645, 210426712] 测试用例中的 case_id:210426343 测试用例中的 case_id_list: [210426343, 210426628, 210426645, 210426712]

第二次运行日志,在这种情况下,它看起来像是使用上次调用中传递的值运行:

正在收集……收集了 4 件物品

../testcase_folder/test_runner.py::TestClass::testcase[210426343] get_run_List: testcase_run_list: ['210426645'] 测试用例中的 case_id:210426343 测试用例中的case_id_list:['210426645']

1 个答案:

答案 0 :(得分:0)

按照 MrBean 的解决方案,我用 pytest_generate_tests 替换 @pytest.mark.parametrize

解决了这个问题

有关 pytest_generate_tests 的更多信息可以在 https://docs.pytest.org/en/reorganize-docs/parametrize.html#basic-pytest-generate-tests-example

找到