新闻详情

新闻详情

首页 / 资讯中心 / 详情

Web自动化测试10-pytest与Allure

发布时间:2026/10/1 11:44:39来源:尧图网络
Web自动化测试10-pytest与Allure
在我们已经学会使用Selenium来写测试脚本之后我们需要引入另一主流单元测试框架pytest以及Allure报告来对项目进行重构pytestpytest是一种功能比较完善的基于Python的测试框架。安装1.WinR打开CMD2.在终端中输入如下代码pip install pytest运行后如图所示3.检验是否下载好输入如下代码pip show pytest运行后如图所示即下载成功实操pytest示例当使用pytest框架编写测试用例时测试类名称必须以Test开头测试方法或函数名称要以test开头。我们先打一个测试代码如下所示#定义了一个求和函数add()该函数用于求函数中传递的参数a与参数b的和 def add(a, b): return a b #定义了一个测试类TestAdd class TestAdd: #定义了一个test_add()方法用于测试函数add()是否为求和函数 def test_add(self): result add(4, 5) #将函数求和结果输出 print(result)在VSCode中使用pytest测试步骤如下1.如图点击2.选择代码所在文件夹3.运行测试4.结果如图所示pytest断言目的是让程序去判断程序运行的结果是否符合预期结果。语法格式如下assert 表达式如果表达式返回值为true则断言成功否则断言失败程序抛出异常pytest中常用的断言表达式如表所示断言表达式说明assert a in b判断b是否包含aassert a not in b判断b受否不包含aassert a b判断a是否大于bassert a b判断a是否小于bassert a b判断a是否等于bassert a b判断a是否大于等于bassert a b判断a是否小于等于bassert a判断a是否为真assert not a判断a是否为假试一下用断言判断result的值是否为9#定义了一个求和函数add()该函数用于求函数中传递的参数a与参数b的和 def add(a, b): return a b #定义了一个测试类TestAdd class TestAdd: #定义了一个test_add()方法用于测试函数add()是否为求和函数 def test_add(self): result add(4, 5) # #将函数求和结果输出 # print(result) assert result 9运行后结果如下FixtureFixture在pytest框架中表示测试固件用于对测试环境的初始化和销毁并且功能灵活应用简单便捷支持参数设置有利于运行多条测试用例在pytest框架中使用Fixture管理测试用例有两种方式是以模块或函数的模式管理测试用例。是以类或方法的模式管理测试用例。这两种模式可以独立运行也可以进行交互Fixture基于测试用例运行层的固件部分可以分为四个级别模块级别模块级别是指在模块中定义setup_module()方法和teardown_module()方法这两个方法分别在模块运行前和运行后被调用在整个模块运行中只执行一次作用于模块中的测试用例函数级别函数级别是指在模块中定义setup_function()方法和teardown_function()方法这两个方法分别在函数运行前和运行后被调用作用于测试函数定义于类外面的测试用例。模块中有几个测试函数就执行几次函数级别的方法。类级别类级别是指在模块或类中定义setup_class()方法和teardown_class()方法并为这两个方法添加装饰器classmethod。setup_class()方法和teardown_class()方法分别在类运行前和运行后被调用。在类运行的过程中只执行一次作用于类中的测试用例方法级别方法级别是指在类中定义setup_method()方法或setup()方法、teardown_method()方法或teardown()方法。这两个方法分别在测试方法运行前和运行后被调用。在每个测试方法运行的过程中只执行一次作用于类中的所有测试方式接下来通过一个案例演示如何使用Fixture中四个级别对应的方法新建一个test_fixture.py文件注意test开头如果不是test开头pytest会检测不到def add(x, y): return x y #模块级别 def setup_module(): print(模块级别模块运行前运行1次setup_module()方法) def teardown_module(): print(模块级别模块运行后运行1次teardown——module()方法) #函数级别 def setup_function(): print(函数级别函数运行前运行1次setup_function()方法) def teardown_function(): print(函数级别函数运行后运行1次teardown_function()方法) def test_add01(): print(测试函数1) assert add(5, 6) 11 class TestFixture: #类级别 classmethod #装饰器 def setup_class(cls): print(类级别类运行前运行1次setup_class()方法) classmethod def teardown_class(cls): print(类级别类运行后运行1次teardown_class()方法) #方法级别 def setup_method(self): print(方法级别方法运行前运行1次setup_method()方法) def teardown_method(self): print(方法级别方法运行后运行1次teardown_method()方法) def test_add02(self): print(测试方法1) assert add(3, 4) 7如图下操作进行测试注意通过用 VSCode 的烧瓶按钮测试面板运行时看不到 print 输出是因为Pytest 默认会“捕获”测试过程中的打印内容不让它直接显示在控制台以免干扰测试结果。要让这些 print 显示出来需要添加-s参数来关闭捕获在终端页面输入如下代码运行pytest -s test_fixture.py运行结果如图所示即成功conftestconftest文件是pytest特有的配置文件可以实现数据参数、方法、函数的共享。它的核心作用是存放共享的 Fixture让同一个目录及子目录下的测试文件自动使用不需要 import。fixture中的scope参数可以控制fixture的作用范围。共有function、scope、module和session 4种作用范围。一句话总结conftest管的是「这个 fixture 对谁可见」scope管的是「这个 fixture 活多久」。fonction每一个函数或方法都会被调用。class每一个类被调用一次module每一个Python文件被调用一次session多个文件仅调用一次参数化pytest常用参数如上面用到的-spytest还包含以下常用参数对测试也比较有帮助-x表示在测试过程中如果有一个测试用例执行失败则退出整个测试。常用于调试测试代码-k用于对测试用例的筛查如只运行包含“search”字样测试用例命令为“pytest -k search test_case.py”-s可以显示测试代码中的print语句的输出-v详细模式显示每个测试用例的完整名称和结果如何做参数化在测试过程中很可能需要基于同一个测试方法进行多轮测试但是每轮测试的输入参数可能是不一样的。此时需要考虑测试数据的管理和应用。Pytest单元测试框架提供了参数化的方式减少测试程序中的冗余代码和测试人员的工作量。参数化就是把一组测试用例中的固定测试数据提取出来然后存放在一个集合中程序执行时会自动从该集合中获取测试数据直到集合中的数据被获取完。在pytest中可以通过装饰器pytest.mark.parametrzie()实现参数化语法格式如下pytest.mark.parametrzie(argnames,argvalues,indirectfalse,idsNone,scopeNone)上述装饰器中有五个参数其中参数argnames和argvalues为必传参数其余三个参数通常不用传递。argnames必传参数表示参数名称多个参数名称之间用逗号隔开。例如“usernamepasswor”argvalues必传参数表示参数值多个参数值之间用逗号隔开该值可以是列表类型、元组类型或字典类型的数据例如列表类型的数据[123,456]元组类型的数据[(1,2,3),(4,5,6)]。argvalues中有几组数据测试方法就会运行几次需要注意的是argvalues中每组测试数据的参数个数要与argnames中的参数名称个数相同否则程序会报错接下来测试一下product()是否为求积函数演示如何使用参数化新建文件test_param.py#由于要使用pytest中的装饰器pytest.mark.parametrzie() # 所以需要先import,导入包 import pytest def product(a, b): return a * b class TestProduct: pytest.mark.parametrize(a,b,expect,[(2, 2, 4),(2, 3, 6)]) def test_product(self, a, b, expect): result product(a, b) assert expect result在终端中输入命令pytest -sv test_param.py结果如下可见成功带入执行了两次AllureAllure可以给用户提供比较直观的测试图文报表效果比较炫酷。首先需要安装all LUE软件包安装命令为pip install allure-pytest一句话来说Selenium 是干活的手Pytest 是管事的工头Allure 是写报告的文员
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

IO-Link本质解析:不是通信协议,而是设备数字化的底层使能技术 2026/10/1 14:08:35

IO-Link本质解析:不是通信协议,而是设备数字化的底层使能技术

1. 从产线上的一个“黑盒子”开始:为什么IO-Link不是又一个通信协议?去年在苏州一家汽车零部件厂做设备联调,第一次见到IO-Link主站模块时,我下意识把它当成了普通IO扩展模块——插上电源、接好总线、配好地址,结果PLC…

阅读更多 →
Agent开发从Demo到生产:编排、RAG、工具调用、状态管理与安全兜底五大核心实践 2026/10/1 14:08:35

Agent开发从Demo到生产:编排、RAG、工具调用、状态管理与安全兜底五大核心实践

1. 从“会调API”到“能交付系统”:Agent开发真正的分水岭 做了近两年的Agent开发,我越来越觉得,这个领域表面上热闹得不行——新框架、新概念、新论文几乎每周都在刷屏,但真正落到工程里,能决定一个Agent项目成败的东…

阅读更多 →
Agent 时代的基础设施:数据、智能与进化层的工程实践 2026/10/1 14:08:35

Agent 时代的基础设施:数据、智能与进化层的工程实践

1. Agent 时代的基础设施到底在变什么 1.1 从“模型为中心”到“数据与执行环境为中心”的转向 过去两年,绝大多数团队做 AI 应用的路径都差不多:选一个能力最强的模型,把提示词打磨到极致,然后接一个向量库做检索,就…

阅读更多 →
Linux救援模式实战:从原理到修复fstab、GRUB与密码丢失 2026/10/1 14:08:35

Linux救援模式实战:从原理到修复fstab、GRUB与密码丢失

直接说结论:Linux救援模式是系统坏了以后,你还能进得去的那个最小可用环境。不管你是因为fstab写错、GRUB损坏、root密码丢失还是内核panic,只要手里有这份知识,大多数场景都能在不重装系统的前提下把机器救回来。这篇文章会从原理…

阅读更多 →
UG894中英对照版:Vivado Tcl脚本自动化流程实战指南 2026/10/1 14:08:35

UG894中英对照版:Vivado Tcl脚本自动化流程实战指南

简介:UG894中英文对照版是一份基于Vivado 2025.1的官方用户指南PDF,面向FPGA工程师,系统讲解Tcl脚本在Vivado中的自动化设计应用,覆盖综合、实现、报告生成等重复性任务。资源由1个PDF文件组成,压缩包大小12.5MB&#…

阅读更多 →
2024年TensorFlow学习指南:从安装到部署的实战经验与避坑手册 2026/10/1 14:08:28

2024年TensorFlow学习指南:从安装到部署的实战经验与避坑手册

看到“tensorflow”这个标题,我第一反应是:这又是一个谈了几年的老话题,但老话题每年都有新讲法。作为一个从TensorFlow 1.x就开始踩坑、经历了2.0大改版、又被同事拉去PyTorch阵营又遛回来的老用户,我想跟你说点实在的&#xff1…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉