10-pytest-parametrize中使用fixture
Posted 爱学习de测试小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10-pytest-parametrize中使用fixture相关的知识,希望对你有一定的参考价值。
目录
前言
- 测试用例参数化的时候,使用 pytest.mark.parametrize 参数化传测试数据,如果想引用前面不同fixture返回的数据当测试用例的入参。可以使用fixture 参数化 prams 来间接解决这个问题
代码示例
# -*- coding: utf-8 -*-
# @Time : 2021/10/11
# @Author : 大海
# @File : test_17.py
import pytest
@pytest.fixture()
def a():
return 0
@pytest.fixture()
def b():
return 1
@pytest.fixture(params=['a', 'b'])
def arg(request):
# getfixturevalue 的作用是获取 fixture 的返回值
print('这是入参:', request.getfixturevalue(request.param))
return request.getfixturevalue(request.param)
def test_foo(arg):
assert arg < 2
if __name__ == "__main__":
pytest.main(["-s", "test_17.py"])
使用实例
- 跑兼容性测试,在Chrome和Firefox上跑同样的功能脚本
# -*- coding: utf-8 -*-
# @Time : 2021/10/11
# @Author : 大海
# @File : test_18.py
import pytest
from selenium import webdriver
# 注:Chrome和Firefox的驱动已添加到环境变量
@pytest.fixture()
def chrome():
driver = webdriver.Chrome()
yield driver
driver.quit()
@pytest.fixture()
def firefox():
driver = webdriver.Firefox()
yield driver
driver.quit()
@pytest.fixture(params=['chrome', 'firefox'])
def driver(request):
return request.getfixturevalue(request.param)
def test_foo(driver):
driver.get("https://blog.csdn.net/IT_heima")
driver.maximize_window()
print(driver.title)
if __name__ == "__main__":
pytest.main(["-s", "test_18.py"])
以上是关于10-pytest-parametrize中使用fixture的主要内容,如果未能解决你的问题,请参考以下文章