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
方法来解决问题。解决 无用评论 打赏 举报
悬赏问题
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
- ¥15 Arduino无法同时连接多个hx711模块,如何解决?
- ¥50 需求一个up主付费课程
- ¥20 模型在y分布之外的数据上预测能力不好如何解决