Pytest 结合 Allure 生成测试报告

测试报告在项目中是至关重要的角色,一个好的测试报告:

可以体现测试人员的工作量;
开发人员可以从测试报告中了解缺陷的情况;
测试经理可以从测试报告中看到测试人员的执行情况及测试用例的覆盖率;
项目负责人可以通过测试报告查看整个项目还余留多少问题,此次版本是否测试通过;
所以打造一个美观、一目了然的测试报告,清晰的反应质量问题,并提供给相关人员了解项目的整体状态,是非常必要的。

Pytest 结合 Allure 生成测试报告

Allure 框架是一种灵活的、轻量级、支持多语言测试报告工具,它不仅能够以简洁的 Web 报告形式显示已测试的内容,而且允许参与开发过程的每个人从测试的日常执行中提取最大限度的有用信息。同时支持多种语言包括 Java、Python、JavaScript、Ruby、Groovy、PHP、.Net、 Scala。

安装
Mac 可以使用 brew 安装 allure,安装命令如下:

brew install allure 
  • 1

其他操作系统请参考:

https://docs.qameta.io/allure/#_installing_a_commandline
  • 1

与 pytest 结合需要安装 allure-pytest 插件:

pip install allure-pytest
  • 1

查看 Allure 版本:

allure --version
  • 1

运行
第一步:在 pytest 执行测试的时候,指定参数 --alluredir 选项及结果数据保存的目录,代码如下:

pytest --alluredir=tmp/my_allure_results
  • 1

tmp/my_allure_results 中保存了本次测试的结果数据。

第二步:打开报告,需要启动 allure 服务,在 terminal 中输入 allure serve [path/to/allure_results],代码如下:

allure serve path/to/allure_results
  • 1

也可以使用 allure generate 生成 HTML 格式的测试结果报告,并使用 allure open 来打开报告。

allure generate ./result/ -o ./report/ --clean
  • 1

上面的命令将 ./result/ 目录下的测试数据生成HTML测试报告到 ./report 路径下,-–clean 选项目的是先清空测试报告目录,再生成新的测试报告,然后使用下面的命令打开报告。

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

上面这个命令则会启动一个 Web 服务将已经生成的测试报告打开。打开生成的测试报告,在默认的浏览器打开测试报告,报告如下:
在这里插入图片描述
在这里插入图片描述
上面的测试报告首页中展示了此次测试的测试用例数量以及成功用例、失败用例、跳过用例的比例、测试环境、SUITES、FEATURES BY STORIES 等基本信息。当与 Jenkins 做了持续置成后,TREND 区域还将显示,历次测试的通过情况。

首页的左边栏,还从不同的维度展示测试报告的其他信息。重点页面介绍:

Behaviors 页面,按照 FEATURES 和 STORIES 展示测试用例的执行结果;
Suites 页面,Allure 测试报告将每一个测试脚本,作为一个 Suite。在首页里点击 Suites 区域内的任何一条 Suite,都会进入 Suites 页面;
Graphs 页面,展示了此次测试结果的统计信息,比如测试用例执行结果状态、测试用例重要等级分布、测试用例执行时间分布等;
测试用例详情页面,在 Suites 页面上点击任何一条测试用例,Suites 页面的右侧将展示这条用例的详细执行情况。在这个页面可以看到测试用例的每个步骤,以及每个步骤的执行结果,包括步骤里面添加的链接、图片、网页片段或者视频作为重要信息的补充。在这里可以一目了在的看到用例失败的原因。

实战案例|百度搜索功能自动化测试

在实际项目中,一旦用例报错,我们希望能够将当时应用的状态记录下来,记录这些状态的方式可以是日志、截图、视频等手段,并将这些记录在测试报告中,方便相关人员定位问题。我们基于 Pytest 与 Allure 结合生成测试报告来实现这个目标。

以百度 Web 网页版本测试为例,百度首页呈现的功能:新闻、网页、贴吧、知道、音乐、图片、视频、地图等,我们以百度网页的搜索功能为例,使用 Allure、pytest 结合 Selenium 自动化测试框架,完成一个搜索功能的测试。

为了模拟百度搜索功能场景,这里需要创建两个文件,数据文件与用例文件。首先创建数据管理文件 data/data.yml,代码如下:

- allure
- pytest
- unittest
  • 1
  • 2
  • 3

然后,创建用例文件名为 test_baidudemo.py,代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import allure
import pytest
import yaml
from selenium import webdriver
import time

@allure.testcase("http://www.github.com")
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data1', yaml.safe_load(\
open("data/data.yml")))
def test_steps_demo(test_data1):
    with allure.step("打开百度网页"):
        driver = webdriver.Chrome()
        driver.get("http://www.baidu.com")
        driver.maximize_window()

    with allure.step(f"输入搜索词:{test_data1}"):
        driver.find_element_by_id("kw").send_keys(test_data1)
        time.sleep(2)
        driver.find_element_by_id("su").click()
        time.sleep(2)

    with allure.step("保存图片"):
        driver.save_screenshot("./result/b.png")
        allure.attach.file("./result/b.png", \
        attachment_type=allure.attachment_type.PNG)
    with allure.step("关闭浏览器"):
        driver.quit()

代码解析:

allure.testcase 用例标识,给定用例的链接,可以与用例的管理地址关联。
allure.feature 功能模块划分,方便管理和运行测试用例。
pytest.mark.parametrize 用来参数化测试用例。
allure.step 用来添加测试步骤,在测试报告里面会展示出来这个步骤说明。
执行:

 pytest test_baidudemo.py -s -q --alluredir=./result/

 allure serve ./result/
  • 1
  • 2
  • 3

测试结果图:
在这里插入图片描述
在这里插入图片描述
上面的测试报告展示运行时间,时长,用例数,通过率,以及测试套件 SUITES,环境等信息。

点击左侧栏最下方的 Package 可以看到所有的测试用例以及测试数据,点击一条用例右侧会展示出用例的优先级,数据,测试步骤以及每个步骤的的名称及附加的图片等信息。这里添加了一个测试用例的链接,可以与测试用例的管理链接关联起来,方便后期统计覆盖率。

另外,pytest 与 Allure 也可以与 Jenkins 集成,实现自动化测试的持续集成。

 最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/338298.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年前前同事12个月薪水未发,来聊聊普通的开发人如何避开丛丛杀机的新一年

转眼又一年,2024已经快走完了十二分之一。 回顾2023,整个程序员行业关键词总结为:跳槽,加班,裁员,失业,欠薪。 前几年互联网的火爆随着这几年疫情,国际社会动荡,国内外经…

Java设计模式详解-更新中

收藏和关注的同时,请也关注 公众号 “IT技术馆” 各位大家好,从今天开始,作者开始整理 《JAVA软件设计模式(GOF)》 专栏。请各位多多关注! 该专栏是根据作者的技术经验和设计模式的了解,进行详…

Docker-Confluence部署记录

启动 docker container run -v $(pwd):/var/atlassian/application-data/confluence/ --nethost -d --nameconfluence_720_20240120 confluence/confluence:7.2.0新建mysql数据库 导入破解包 atlassian-agent 参考-Confluence 破解方式(Linux) 按流程破…

idea消除代码区黄色警告

文章目录 前言一、修改配置总结 前言 idea的检查项较多,导致警告比较多看上去很不雅观。 一、修改配置 在idea中打开Settings 取消Warning和Weak Warning的勾选 总结 回到顶部

【Python学习】Python学习21- 正则表达式(1)

目录 【Python学习】Python学习21- 正则表达式(1) 前言re.match函数实例 re.search方法re.match与re.search的区别参考 文章所属专区 Python学习 前言 本章节主要说明Python的正则表达式。 正则表达式是一个特殊的字符序列,它能帮助你方便的…

uniCloud uni-id体系的使用

目录 简介 uni-id导入和配置 用户表与文章表关联foreignKey 字段级权限控制 指定数据集权限控制 权限规则的变量和运算符 简介 uni-id已完成的功能: 注册、登录、发送短信验证码、密码加密保存、修改密码、忘记密码、头像管理、token管理、rbac权限角色体系、…

04 单链表

目录 链表的概念和结构单链表OJ练习 1. 链表的概念和结构 1.1 链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 1.从上图可以看出链式结构在逻辑上是连续的,物理上不一定连续 2.现…

提升网站关键词排名的工具

随着互联网的蓬勃发展,网站的关键词排名成为衡量网站流量和曝光度的重要指标。在这个竞争激烈的数字时代,站在搜索引擎结果的前列变得至关重要。为了实现这一目标,合理利用关键词排名优化工具是必不可少的。本文将重点介绍147SEO软件&#xf…

数据库入门:快速了解数据库

目录 序言 一、什么是数据库? 二、DBMS 数据库管理系统(DataBase Management System) 三、数据库与文件系统的区别 四、数据库的发展和规划 五、常见数据库 5.1 关系型数据库 5.2 非关系型数据库 六、DBMS支持的数据模型 6.1 层次模…

2024年【河北省安全员B证】最新解析及河北省安全员B证试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 河北省安全员B证最新解析是安全生产模拟考试一点通生成的,河北省安全员B证证模拟考试题库是根据河北省安全员B证最新版教材汇编出河北省安全员B证仿真模拟考试。2024年【河北省安全员B证】最新解析及河北省…

C++入门学习(八)sizeof关键字

sizeof 是 C 和 C 中的一个运算符&#xff0c;用于确定特定类型或对象的内存大小&#xff08;以字节为单位&#xff09;。 1、查看数据类型占据内存大小 #include <iostream> using namespace std; int main() {short a 1;int b 1;long c 1;long long d 1;cout<…

跨部门算法迭代需求,从提出到上线的全流程实践

文章目录 引言需求评审技术方案评审模块开发系统联调QA测试产品验收经验教训 引言 最近工作中有一个算法迭代的需求&#xff0c;我在其中作为技术侧负责人&#xff08;技术主R&#xff09;推动需求完成上线。 需求涉及多个部门&#xff0c;前后耗时接近1个月。 我第一次在这…

Spring-简介

在向读者描述Spring时&#xff0c;笔者不打算从某处粘贴一段常见的概念性文字糊弄完本专栏的第一篇文章&#xff0c;而是用易于理解的话向读者指出几个重点。 &#xff08;1&#xff09;是框架。何谓框架&#xff1f;就像搭房子一样&#xff0c;框架就如同是墙体结构&#xff…

【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

Qt Creator 下载地址&#xff08;含历史版本&#xff09;&#xff1a;https://download.qt.io/official_releases/qtcreator/ 症状 Qt Creator 目前最新版为12.0.1&#xff0c;安装后打开.qml文件发现设计工具图标为禁用状态。 原因及解决方案 根据官网材料&#xff08;Qt C…

苹果笔记本 macbook 在 office word 中使用 mathtype 的方法

前言 想在 MacBook 中使用 mathtype&#xff0c;去搜索&#xff0c;去 Apple Store 下载也发现没有 解决方法 打开 office Word 的「插入」中的「获取加载项」、「我的加载项」。 在应用商店中下载&#xff0c;需要登录自己的微软账号。 加载成功后就可以使用了。 注意 和…

Python 类变量和实例变量详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;变量分为类变量和实例变量两种类型&#xff0c;它们有着不同的作用范围和生命周期。理解这两种变量类型的区别对于面向对象编程非常重要。本文将详细介绍Python中的类变量和实例变量&…

webpack 核心武器:loader 和 plugin 的使用指南(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

docker使用http_proxy配置代理

钢铁知识库&#xff0c;一个学习python爬虫、数据分析的知识库。人生苦短&#xff0c;快用python。 在内网服务器中&#xff0c;docker经常需要下载拉取镜像&#xff0c;但由于没有网络要么只能手动导入镜像包&#xff0c;又或者通过http_proxy代理到其它服务器下载。 解决方法…

OneNote使用总结

试一下OneNote表格复制到CSDN的编辑器 用表格整理内容挺方便的&#xff0c;不过复制过来格式还是有些变化 目录 常用快捷键 高级应用 常用快捷键 文字编辑与排版 字号增加减小 Ctrl Shift 大于小于号 整行上下移动 左右缩进 Alt Shift方向 插入或转为公式 Alt 等于…

机试指南:Ch1:绪论 Ch2:枚举和模拟

文章目录 第1章 绪论(1)如何准备机试(2)OJ和开发环境简介(3)OJ的原理、OJ的几种情况(4)学习建议(5)23版内容(6)常犯的编程小错误(7)其他小问题一览①int取值范围②return 0 缺省问题③万能头文件 #include <bits/stdc.h>④scanf、printf 比 cin、cout 更节约时间⑤不确定…