pytest框架如何实现动态获取测试数据
使用场景及问题:在使用pytest自动化框架实现ui自动化时,测试数据是需要操作页面到某一个列表页后实时获取到的。pytest的执行机制是用例执行前首先会收集参数化的测试数据。因此如果在参数化的时候直接调用函数获取数据,那在用例以及fixture执行之前,就会报错找不到对象。请问如何能实时获取?
pytest框架如何实现动态获取测试数据
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
程序猿小彭 2023-06-09 11:32关注使用
pytest_generate_tests函数。这个函数会在测试用例生成之前被调用,并且可以根据需要生成多组测试用例。具体实现方法如下:
- 定义一个函数来获取测试数据:
def get_test_data(): # 在这里实时获取测试数据 test_data = ... return test_data这个函数可以根据需要在运行时实时获取测试数据,并返回一个列表或者元组等数据结构。
- 定义一个
pytest_generate_tests函数来生成测试用例:
def pytest_generate_tests(metafunc): if 'test_data' in metafunc.fixturenames: data = get_test_data() metafunc.parametrize('test_data', data)这个函数会在测试用例生成之前被调用,它的参数
metafunc包含了当前测试用例的信息。如果测试用例中包含名为test_data的fixture,那么就可以在这个函数中调用get_test_data()函数来获取测试数据,并通过parametrize()函数将测试数据注入到测试用例中。- 在测试用例中使用
test_data来进行测试操作:
def test_case(test_data): # 使用获取到的测试数据进行测试操作 do_something(test_data)在这个测试用例中,我们可以通过
test_data参数来获取到测试数据,并使用这些数据进行测试操作。使用
pytest_generate_tests函数可以灵活地生成多组测试用例,但需要注意的是,这个函数的参数metafunc中包含了当前测试用例的信息,因此只有在测试执行前才能获取到测试数据。如果测试过程中需要实时获取测试数据,那么就需要使用上面提到的fixture方法来解决问题。解决 无用评论 打赏 举报