网站首页 > 技术教程 正文
前言
测试用例参数化的时候,使用 pytest.mark.parametrize() 参数化传测试数据,如果我们想引用前面不同fixture返回的数据当测试用例的入参。这个时候我们就可以用fixture 参数化 prams 来间接解决这个问题,本文就来给大家介绍一下如何使用fixture来实现参数化。
使用案例
我们需要在测试用例里面参数化,参数化的数据来源于前面不同fixture的返回值,错误示例如下:
pythonimport pytest
@pytest.fixture
def a():
return 'a'
@pytest.fixture
def b():
return 'b'
@pytest.mark.parametrize('arg', [a, b])
def test_demo(arg):
assert len(arg) == 1
---------
执行结果如下:
============================= test session starts =============================
collecting ... collected 2 items
test_a.py::test_demo[a] FAILED [ 50%]
test_a.py:61 (test_demo[a])
arg = <function a at 0x00000265A2C65AF8>
@pytest.mark.parametrize('arg', [a, b])
def test_demo(arg):
> assert len(arg) == 1
E TypeError: object of type 'function' has no len()
test_a.py:64: TypeError
FAILED [100%]
test_a.py:61 (test_demo[b])
arg = <function b at 0x00000265A2C65C18>
@pytest.mark.parametrize('arg', [a, b])
def test_demo(arg):
> assert len(arg) == 1
E TypeError: object of type 'function' has no len()
test_a.py:64: TypeError
使用 fixture 参数化
我们可以使用 fixture 的参数化来解决上面的问题,通过 request.getfixturevalue(“fixture name”) 方法来获取fixture的返回值,示例代码如下:
pythonimport pytest
@pytest.fixture
def a():
return 'a'
@pytest.fixture
def b():
return 'b'
@pytest.fixture(params=['a', 'b'])
def arg(request):
return request.getfixturevalue(request.param)
def test_demo(arg):
assert len(arg) == 1
-------------
运行结果如下:
============================= test session starts =============================
collecting ... collected 2 items
test_a.py::test_demo[a] PASSED [ 50%]
test_a.py::test_demo[b] PASSED [100%]
============================== 2 passed in 0.04s ==============================
实际应用场景
当我们在进行web自动化测试,需要在不同浏览器上运行同一个功能的用例时,fixture参数化就派上了用场,如下所示:
pythonimport pytest
from selenium import webdriver
@pytest.fixture
def chrome():
driver = webdriver.Chrome()
yield driver
driver.quit()
@pytest.fixture
def firefox():
driver = webdriver.Edge()
yield driver
driver.quit()
@pytest.fixture(params=['chrome', 'edge'])
def driver(request):
'''启动浏览器参数化'''
return request.getfixturevalue(request.param)
def test_foo(driver):
'''测试用例'''
driver.get("https://www.ceshiren.com")
总结
本文主要介绍了pytest的fixture作为参数使用的方法,fixture作为参数使用,在某些时候能够极大地方便我们的工作,希望本文能够帮到大家!
获取更多技术资料,请点击!
推荐
Python全栈开发与自动化测试开发班 由浅入深实战进阶,从小白到高手
以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。
课程详情 Python开发必备基础技能与项目实战 Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战
人工智能ChatGPT实战 人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战
数据分析与自动化办公 数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理
UI自动化测试与高级项目实战 Web自动化测试/App自动化测试/ PageObject设计模式
接口自动化测试 接口协议分析/Mock实战/服务端接口测试
性能测试 性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建
简历指导与模拟面试 1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务 名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘
课程亮点 名企私教服务 先学习后付费 高额奖学金 专属社群+晚自习在线答疑 5V1全方位辅导作业+考试强化学习效果 简历修改 模拟面试 就业内推 面试复盘
猜你喜欢
- 2024-11-17 这些年,英国女王就靠这件事赚了6000多万元!
- 2024-11-17 主题分类词汇 14 (Industry 工业)
- 2024-11-17 工件的安装与夹具,建议收藏
- 2024-11-17 Pytest fixture及conftest详解
- 2024-11-17 pytest框架进阶自学系列 | 在不同的层级上重写fixture
- 2024-11-17 仕诺康丨全程导板工具盒
- 2024-11-17 Pytest的内置fixture(七)
- 2024-11-17 你会买吗?可以边走边玩的Switch专用手柄支架Fixture S1开启众筹
- 2024-11-17 思林杰获得外观设计专利授权:“充电座(BBUChargingFixture)”
- 2024-11-17 软件测试 | pytest测试框架纸fixture进阶
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)