当前位置:   article > 正文

10-pytest-parametrize中使用fixture_fixture返回类变量

fixture返回类变量

目录

前言

代码示例

使用实例


前言

  • 测试用例参数化的时候,使用 pytest.mark.parametrize 参数化传测试数据,如果想引用前面不同fixture返回的数据当测试用例的入参。可以使用fixture 参数化 prams 来间接解决这个问题

代码示例

  1. # -*- coding: utf-8 -*-
  2. # @Time : 2021/10/11
  3. # @Author : 大海
  4. # @File : test_17.py
  5. import pytest
  6. @pytest.fixture()
  7. def a():
  8. return 0
  9. @pytest.fixture()
  10. def b():
  11. return 1
  12. @pytest.fixture(params=['a', 'b'])
  13. def arg(request):
  14. # getfixturevalue 的作用是获取 fixture 的返回值
  15. print('这是入参:', request.getfixturevalue(request.param))
  16. return request.getfixturevalue(request.param)
  17. def test_foo(arg):
  18. assert arg < 2
  19. if __name__ == "__main__":
  20. pytest.main(["-s", "test_17.py"])

使用实例

  • 跑兼容性测试,在Chrome和Firefox上跑同样的功能脚本
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2021/10/11
  3. # @Author : 大海
  4. # @File : test_18.py
  5. import pytest
  6. from selenium import webdriver
  7. # 注:Chrome和Firefox的驱动已添加到环境变量
  8. @pytest.fixture()
  9. def chrome():
  10. driver = webdriver.Chrome()
  11. yield driver
  12. driver.quit()
  13. @pytest.fixture()
  14. def firefox():
  15. driver = webdriver.Firefox()
  16. yield driver
  17. driver.quit()
  18. @pytest.fixture(params=['chrome', 'firefox'])
  19. def driver(request):
  20. return request.getfixturevalue(request.param)
  21. def test_foo(driver):
  22. driver.get("https://blog.csdn.net/IT_heima")
  23. driver.maximize_window()
  24. print(driver.title)
  25. if __name__ == "__main__":
  26. pytest.main(["-s", "test_18.py"])

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/143736
推荐阅读
相关标签
  

闽ICP备14008679号