谢飞旺仔机 2023-06-07 14:25 采纳率: 0%
浏览 19

pytest框架如何实现动态获取测试数据

pytest框架如何实现动态获取测试数据
使用场景及问题:在使用pytest自动化框架实现ui自动化时,测试数据是需要操作页面到某一个列表页后实时获取到的。pytest的执行机制是用例执行前首先会收集参数化的测试数据。因此如果在参数化的时候直接调用函数获取数据,那在用例以及fixture执行之前,就会报错找不到对象。请问如何能实时获取?

  • 写回答

1条回答 默认 最新

  • 程序猿小彭 2023-06-09 11:32
    关注

    使用 pytest_generate_tests 函数。这个函数会在测试用例生成之前被调用,并且可以根据需要生成多组测试用例。

    具体实现方法如下:

    1. 定义一个函数来获取测试数据:
    def get_test_data():
        # 在这里实时获取测试数据
        test_data = ...
        return test_data
    

    这个函数可以根据需要在运行时实时获取测试数据,并返回一个列表或者元组等数据结构。

    1. 定义一个 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_datafixture,那么就可以在这个函数中调用 get_test_data() 函数来获取测试数据,并通过 parametrize() 函数将测试数据注入到测试用例中。

    1. 在测试用例中使用 test_data 来进行测试操作:
    def test_case(test_data):
        # 使用获取到的测试数据进行测试操作
        do_something(test_data)
    

    在这个测试用例中,我们可以通过 test_data 参数来获取到测试数据,并使用这些数据进行测试操作。

    使用 pytest_generate_tests 函数可以灵活地生成多组测试用例,但需要注意的是,这个函数的参数 metafunc 中包含了当前测试用例的信息,因此只有在测试执行前才能获取到测试数据。如果测试过程中需要实时获取测试数据,那么就需要使用上面提到的 fixture 方法来解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月7日

悬赏问题

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