当前位置: 首页 > news >正文

pytest自动化测试框架搭建,并生成allure测试报告

一、pytest的安装

1、介绍

1. 简单灵活,容易上手;支持参数化; 测试用例的skip和xfail 处理;
2. 能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium/appium等自动化测试、接口自动化测试 (pytest+requests);
3. pytest具有很多第三方插件,并且可以自定义扩展, 比较好 用的如 pytest-allure(完美html测试报告生成) pytest-xdist (多CPU分发)等;
4. 可以很好的和jenkins集成

2、安装

pip install pytest

3、pytest脚本编写

测试用例命名规范

  • pytest 默认收集以下规则的测试用例:
    • 测试文件以 test_ 开头(如 test_sample.py
    • 测试类以 Test 开头(如 class TestExample:
    • 测试函数/方法以 test_ 开头(如 def test_demo():
  • 验证方法
    pytest --collect-only  # 查看是否收集到测试用例

    如果输出为空,说明用例未被正确识别。

       pytest详细使用介绍请参考该文章

  • 脚本如下:
# -*- coding: utf-8 -*-# test_Pytest.py文件
# coding=utf-8import pytestclass Test_Pytest():def test_one(self, ):print("----start------")pytest.xfail(reason='该功能尚未完成')print("test_one方法执行")assert 1 == 1def test_two(self):print("test_two方法执行")assert "o" in "love"def test_three(self):print("test_three方法执行")assert 3 - 2 == 1if __name__ == "__main__":pytest.main(['-s', '-r', 'test_Pytest.py', 'test_Pytest.py'])

运行结果如下图:我们可以看到该用例中pytest.xfail()方法之前的代码运行了,之后的不再运行;结果中有一条用例被标记为xfail。
在这里插入图片描述

4、pytest-html生成报告

pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。兼容Python 2.7,3.6

pytest-html
1.github上源码地址【https://github.com/pytest-dev/pytest-html】

2.pip安装

pip install pytest-html

3.生成html报告

$ pytest --html=report.html

html报告
1)打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest --html=report.html

image
2)执行完之后,在当前目录会生成一个report.html的报告文件,显示效果如下

指定报告路径
1)直接执行"pytest --html=report.html"生成的报告会在当前脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目录下的report文件夹里

pytest --html=./report/report.html

2.如果想指定执行某个.py文件用例或者某个文件夹里面的所有用例,需加个参数。具体规则参考【pytest文档2-用例运行规则】

报告独立显示
1)上面方法生成的报告,css是独立的,分享报告的时候样式会丢失,为了更好的分享发邮件展示报告,可以把css样式合并到html里

pytest --html=report.html --self-contained-html

显示选项
默认情况下,“ 结果”表中的所有行都将被展开,但具测试通过的行除外Passed。

可以使用查询参数自定义此行为:?collapsed=Passed,XFailed,Skipped。

更多功能
1)更多功能查看官方文档【https://github.com/pytest-dev/pytest-html】

二、allure测试报告

allure官网 : Qameta Software - Allure Report

allure文档 : Allure Framework

1、下载

allure的官网下载地址:

官网下载

注意:官网时常访问失败,可以访问以下网址:
备用下载
选择一个版本(windows下载.zip包就可以)

Note: 此处下载安装了2.30.0

2、解压

此处解压后放在了D盘

3、配置环境变量

把bin目录加入PATH环境变量

4、验证是否配置成功

Ctr+R ->重新打开一个cmd 窗口 --> allure或者 --> allure --version

终于ok啦~

5、 安装 allure-pytest插件

pip install allure-pytest

6、生成Allure报告

Allure测试报告的生成:
    1. 安装allure测试报告
    2. pytest --alluredir 指令用于将测试结果的数据保存在allure结果之中或者pytest [测试文件] -s -q --alluredir=./result #--alluredir用于指定存储测试结果的路径)
    3. allure serve ./allure_report
        这个指令是生成临时allure测试报告。并提供web服务以供访问
        生成的测试报告保存在用户的缓存临时文件夹下,路径无法修改
    4. allure generate ./allure_report -o ./report_allure
        这个指令是将allure采集的测试数据生成为完整的allure测试报告,保存在指定路径下。

查看测试报告
方式一:直接打开默认浏览器展示报告

allure serve ./result/

方式二:从结果生成报告

生成报告

allure generate ./result/ -o ./report/ --clean (覆盖路径加--clean)

打开报告

allure open -h 127.0.0.1 -p 8883 ./report/

7. 运行Allure

运行指令:  pytest --alluredir ./allure_report 

将测试结果的数据保存在allure结果之中,同时生成一个测试报告文件。

allure serve ./allure_report 这个指令是生成临时allure测试报告。并提供web服务以供访问。生成一个完整的测试报告。

因为pytest下的allure测试报告生成,需要调用allure指令,这个指令和pytest没有关系,所以想要一步实现数据的记录以及报告的生成,记得添加os.system()方法来调用allure指令。但是,可能allure指令调用会失败。

如果是通过指令运行,集成到pytest之中,生成allure测试报告的话,这个测试报告想要分享,可以在Jenkins中进行集成的方式来做分享(也就是通过链接进行分享的模式)。

如果想要关联持续集成,做到更加完整的自动化测试效果,可以通过allure来实现测试报告的生成。

三、pytest-allure-adaptor

1、pytest-allure-adaptor介绍

  • 核心功能pytest-allure-adaptor 允许用户在 pytest 测试框架中生成 Allure 风格的测试报告。Allure 报告提供了丰富的可视化信息,包括测试用例的执行状态、步骤、附件、历史趋势等,有助于更好地理解和分析测试结果。

  • 集成优势:通过该插件,用户可以在 pytest 中方便地使用 Allure 的特性,如标记测试用例、添加步骤描述、上传附件等,从而生成更加详细和有用的测试报告。

2、 pytest-allure-adaptor与Allure-pytest的关系

  • allure-pytest 的插件,它是 pytest-allure-adaptor 的替代品,提供了更现代和灵活的集成方式。

  • allure-pytest 支持更多的 Allure 特性,并且与最新版本的 pytest 和 Allure 命令行工具兼容性更好。

  • 安装方法:pip install allure-pytest

  • 使用方法与 pytest-allure-adaptor 类似,但提供了更多的配置选项和装饰器。

相关文章:

  • 基础编程题目集 6-9 统计个位数字
  • 二元随机响应(Binary Randomized Response, RR)的翻转概率
  • 手撕基于AMQP协议的简易消息队列-4(项目需求分析)
  • 如何查看某个文件中的特殊符号
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取自身程序的所在的目录?
  • 【前端基础】8、CSS的选择器
  • Jquery ajax 提交序列化或JSON数据到后台
  • LeetCode算法题(Go语言实现)_61
  • 基于大数据分析的Facebook隐私保护策略
  • 全球电商新势力崛起:拆解Coupang的“韩国速度“与未来棋局
  • ESP32开发之freeRTOS的互斥量
  • C++:扫雷游戏
  • MCP vs Function Call:AI交互的USB-C革命
  • Python实现文件批量改名功能
  • MySQL中隔离级别那点事
  • rom定制系列------红米note12 5G版miui14修改型号root版 原生安卓14批量线刷固件 原生安卓15等
  • 【MySQL】存储引擎 - CSV详解
  • @AutoConfigureBefore功能简介-笔记
  • Windows系统下使用Kafka和Zookeeper,Python运行kafka(一)
  • Java 基础知识点——数组相关
  • 安徽亳州涡阳县司法局党组书记刘兴连落马
  • 王受文已任全国工商联党组成员
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 经济日报:降准降息,提前还房贷划算吗?