python测试用例管理_Python测试框架Pytest的常用插件测试报告

原标题:Python测试框架Pytest的常用插件测试报告

39de75bb59524af0b2b4aee3903e7b8b.png

一、pytest-html 生成 html 测试报告

要求:Python 3.6+

安装:pip install pytest-html

文档:https://github.com/pytest-dev/pytest-html、https://www.cnblogs.com/linuxchao/p/linuxchao-pytest-report.html

使用方法:在命令行或 pytest.ini 配置文件 addopts 中添加选项 --html=测试报告路径

(1)命令行方式:pytest --html report/report.html --self-contained-html

(2)pytest.ini文件:addopts = pytest --html report/report.html --self-contained-html

注:默认情况下生成的 html 报告中 css 是分开的,分享报告时将无法正确展示样式,可以使用 --self-contained-html 将 css 合并到 html 中。

二、allure-pytest 生成 Allure 测试报告

Allure 框架是一个灵活的轻量级多语言测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。

从 dev/qa 的角度来看,Allure 报告简化了常见缺陷的统计:失败的测试可以分为 bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。

从管理者的角度来看,Allure 提供了一个清晰的“大图”,其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。Allure 的模块化和可扩展性保证了您总是能够对某些东西进行微调,使 Allure 更适合您,那么今天我们就来说说如何使报告更加详细的显示我们需要的信息,以及 Allure 与 Jenkins 的集成。

要生成一份完整的 Allure 测试报告,需要先安装 Allure 命令行工具,然后找到数据生成测试报告。

1

安装

需安装 Allure 命令行工具以及 alluer-pytest 插件

安装 Allure:windows 下进入 https://bintray.com/qameta/maven/allure2 下载 Allure 的zip安装包解压,添加 allure(安装路径bin)到环境变量 path ;使用 allure --version 查看安装版本

源码:https://github.com/allure-framework/allure2

安装 alluer-pytest:pip install allure-pytest

文档:https://pypi.org/project/allure-pytest/

2

使用方法

2.1 Allure 常用命令

·查看帮助文档:allure help

·生成静态测试报告:allure generate -o ,未使用 -o 指定路径时,报告将生成到 allure-report 文件夹。-c 生成新的报告之前先清除旧的测试报告。

·打开测试报告:allure open

·生成临时报告并打开:allure serve

2.2 生成测试报告

(1)allure-pytest 插件收集测试结果数据:

在 pytest 命令行或 pytest.ini 配置文件 addopts 中添加选项 --alluredir=测试报告存储路径

(2)生成测试报告:

allure generate (执行该命令后将自动打开浏览器浏览测试报告)

(3)打开测试报告:

allure open allure-report

3

Allure 报告结构

3.1 Overview:总览

首页的部件和小窗口可以拖动和自定义。

Environment

可以通过创建 environment.properties 或者 environment.xml 文件来配置环境信息,并把文件存放到 allure-results(这个目录是生成最后的 html 报告之前,生成依赖文件的目录)目录下,也就是 --alluredir 后面跟的目录。

# environment.properties

Browser=Chrome

Browser.Version=80.0.3987.132

Stand=test

ApiUrl=127.0.0.1/login

python.Version=3.6.7

3.2 Categories 缺陷类别

默认是分了 failed 和 error,凡是执行结果是其中一个的都会被归到类里面,可以通过这里快捷查看哪些用例是 failed 和 error 的。

·Product defects 产品缺陷(测试结果:failed)

·Test defects 测试缺陷(测试结果:error/broken)

也可以自定义缺陷分类,在生成测试报告之前将 categories.json 文件添加到 allure-results 目录即可(和上面 environment.properties 放同一个目录)。

自定义缺陷参数说明:

·name:(必填)类别名称,可以为中文

·matchedStatuses:(可选)测试用例的运行状态。默认["failed", "broken", "passed", "skipped", "unknown"]

·messageRegex:(可选)测试用例运行的错误信息,默认是 .* ,可通过正则去匹配

·traceRegex:(可选)测试用例运行的错误堆栈信息,默认是 .* ,可通过正则去匹配

3.3 Suites

测试套件,就是所有用例的层级关系,可以根据 package、module、类、方法来查找用例。

3.4 Graphs

测试结果图形化,包括用例执行结果的分布图,优先级,耗时等。

3.5 Timeline

可以看到测试用例精确的测试时序(执行顺序),包括执行时间。

3.6 Behaviors

行为驱动,根据 epic、feature、story 来分组测试用例。

3.7 Packages

按照 package、module 来分组测试用例。

3.8 Test Case Page

在某些结果概述页面中,单击各个测试可以转到测试用例页面。该页面包含许多与测试用例相关的数据:测试期间执行的步骤,计时,附件,测试分类标签,描述和链接。

0567b8767ec74f2c88494d2a101e6b4e.png

3.9 Flaky

对于不稳定的测试用例,可以使用 @Flaky 将测试用例标记为不稳定,在测试报告中将标记为 Flaky。

4

Allure 支持的功能

Allure 除了支持 Pytest 自带的特性之外,本身也有强大的特性可以使用。

4.1 测试步骤 @allure.step

Allure 允许对每个测试用例进行详细的步骤说明,在测试用例上添加 @allure.step 装饰器即可。该装饰器将带注释的方法或函数的调用与提供的参数一起添加到报表中。

带有注释的方法 @allure.step 可以存储在测试之外,并在需要时导入。

step 可以包含一条描述行,该行支持传递的位置和关键字参数的占位符。关键字参数的默认参数也将被捕获。

可以在 conftest.py 中定义 step,示例:

·conftest.py

·test_demo.py

conftest.py 中的 step 显示在单独的树中,如下:

1936a6c403b24b6fa9e3e6a379fb0d96.png

4.2 附件 allure.attach

使用 allure.attach 可以给测试报告添加各种附件。

方法一:

allure.attach(body, name, attachment_type, extension)

方法二:

allure.attach.file(source, name, attachment_type, extension)

·body:文件原始内容

·name:带有文件名的字符串

·attachment_type:附件类型,可在 allure.attachment_type 中查看支持的附件类型

·extension:创建文件的扩展名

·source:包含文件路径的字符串

报告:

68848292555549a89f13bbe33c27edf5.png

4.3 描述 allure.deion

若想要测试报告更加清晰,可以添加详细的测试用例描述,有三种方式:

·@allure.deion(str)

·在测试用例函数声明下方添加""" """

·@allure.deion_html(str):相当于传一个HTML代码组成的字符串,类似allure.attach中传HTML

报告:

63dbb8f834654cea8055cc95d5d2cac6.png

也可以在测试函数中使用 allure.dynamic.deion 或 allure.dynamic.deion_html 动态更新描述信息。

报告:

2a85f606f95945d885aa95972027c0d8.png

4.4 标题 allure.title

可以使用@allure.title 装饰器使测试标题更具可读性。支持中文,支持参数的占位符并支持动态替换。

报告:

462caa3db81b49bfac309b335f655a14.png

4.5 allure.link、alluer.issue、allure.testcase

为了将 Allure 报告和测试管理系统集成,可以使用 link、issue、testcase

·link(url, link_type, name=None):提供链接地址

·issue(url, name=None):提供带有小错误图标的链接

·testcase(url, name=None):

issue 和 tescase 其实也是调用的 link,只是 LinkType 不一样。

4.6 标记测试用例

@pytest.mark 标记并不会显示在 Allure 报告上,Allure 也提供了三种类型的标记装饰器,它们是可以显示在 Allure 报告上的。如果不加 @allure.feature、@allure.story 时,在测试报告的 Behaviors 栏,测试用例不会分类显示。

(1)BDD样式的标记装饰器:@allure.feature、@allure.story,其中 story 是 feature 的子集,测试报告上将优先显示 feature,展开再显示 story。

想要运行指定的 story 或者 feature 时,运行 pytest 时可以添加选项 --allure-stories、--allure-feature 来指定不同的用例集,用例集之间用逗号 , 分割。

pytest tests.py --allure-stories story_1,story_2 --allure-feature feature_2

(2)优先级(严重程度)标记装饰器:@allure.severity可以修饰函数、方法或整个类,以 allure.severity_level 枚举值作为参数,值包括:BLOCKER、CRITICAL、NORMAL、MINOR、TRIVIAL。

运行指定严重程度的用例,可以在运行 pytest 命令时添加选项--allure-severities

pytest tests.py --allure-severities normal,critical

责任编辑:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python symbol函数展开_QGIS表达式中的函数

编程语言中的函数,与数学函数的定义大不相同。在计算机领域,函数是指一段可以直接被另一段程序或代码引用的程序或代码,也叫做子程序(subroutine)、过程(procedure)、方法(method)。函数在QGIS表达式构建过程中起到重要作用,表达式…

layui 金额数据千分位_IG神秘打野韩服数据,盲僧数据或暗示英雄池问题

在LPL春季赛结束,而夏季赛还未开始的这段时间,是LPL各大战队能够利用的宝贵时间。为了备战S10,有一些队伍确实需要引援。而在这次转会期期间,率先出现转会传闻的是IG战队。据传IG打野Leyan有离队的可能,同时IG也在积极…

mysql 远程登录 1045_MySQL处理远程登录错误1045

远程连接 mySql数据库会提示10061、1045错误或 2003-Can’t connect to MySQL on ’192.168.1.2’(10061),这个原因是因为MySQL不准许远程连接。最简单的办法是,通过root用户进入mysql,添加下面命令:grant all on *.* to 用户名"%"…

python设计模式pdf_精通Python设计模式 高清晰PDF+源码

精通Python设计模式讲述了16种基本设计模式,轻松解决软件设计常见问题;借力高效的Python语言,用现实例子展示各模式关键特性。 本书用实际生活中的例子带你了解常用的设计模式,介绍了诸多有关编写Python风格代码的底层细节和概念&…

java精准查询mysql时间_在mysql查询中查找与指定日期时间最接近的日期时间

我试图在mysql数据库中找到一个datetime值,它与我指定的日期时间最接近,我遇到了一些麻烦 .以下伪代码是我想要实现的:SELECT one FROM table WHERE datetimefield is closest to "2014-12-10 09:45:00" LIMIT 1提前致谢EDIT感谢到…

datanode无法启动_Hadoop DataNode启动和初始化过程

简介我们先看DataNode的doc文档的介绍,DataNode是一个类,用于存储一组块,用于DFS部署。单个部署可以有一个或多个DataNode。每个DataNode通信定期与单个NameNode进行通信。它还可以与客户端和其他的DataNodes通信。DataNode存储一系列命名的块…

MySQL社区介绍_mysql社区服务器

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

mac地址修改_如何修改手机MAC地址?

我们都知道MAC是网卡的物理的地址,一般是固化的网卡芯片,不管是手机和电脑都是相对于的MAC地址的,不管什么情况下MAC的地址都是唯一的。而对于电脑来说大家可以通过更换网卡的方式来换MAC地址,但是对于手机来说,更换硬…

mysql rename table_Mysql: RENAME TABLE IF EXISTS

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):问题:This DROP TABLE IF EXISTS works, too bad that RENAME TABLE IF EXISTS doesnt work.Can anyone suggest a solution for this query? You have an error in …

挖掘机燃料_2020广东挖掘机工程机械出租公司合作共赢

如今的挖掘机具有比以往更多的内置安全功能,但这并不意味着只有任何人都可以爬上驾驶室并安全操作。1、仔细检查地面区域使用挖掘机时,诸如岩石、建筑材料和树桩之类的物品会损害安全性。在开始操作机器之前,请确保已将其从该区域中清理。此外…

mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...

添加和删除列使用ADD向表中添加新列,使用DROP删除现有列。DROP col_name是对标准SQL的MySQL扩展。若要在表行的特定位置添加列,请使用FIRST col_name 或者 AFTER col_name。默认情况是添加到最后。如果表只包含一列,则不能删除该列。如果您想…

ant构建项目迁移到gradle_Gradle构建工具

构建工具的作用:依赖管理;测试、打包、发布;机器能干的活,绝不自己动手。主流构建工具:(1)Ant:编译、测试、打包;(2)Maven:依赖管理、发布;(3)Gradle:Groovy&…

mysql导入数据库某张表_MSSQLServer2005 导出导入数据库中某张表的数据

备注:在工作中我们经常会遇到,将数据库中某张数据表中的内容或数据导出来;今天我们就介绍怎样快速有效的进行数据导出,导入。使用的数据库版本为:mssqlserver2005。首先进行登录mssqlserver2005 ,如下图所示…

pyecharts运行了但是没有图_新版pyecharts,Python可视化so easy and powerful !

作者:chenjiandongx一个执迷于写 bug 的程序员pyecharts V1.0.0 版本正式发布啦!Whats New in pyecharts V1pyecharts 经过了半年的沉寂后,终于发布了新版本啦!新版本号将从 v1.0.0 开始,这是一个全新的,向…

python 整除及余数_python除法余数

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 常量常量就是不变的变量,在python中,通常用大写的变量名表示常量,这一点…

flatmap用法_短说:map和flatmap

PS:本文阅读->理解->GET大概2-5分钟.也许你天天见到,但是一直没理解,占用你少量的时间,相信简单的东西,只需要你付出一点点时间.map和flatmap是Java8中stream的用法.>>>>>>map把数组流中的每一个值,使用所提供的函数执行一遍,一…

python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...

运行: Cmd中运行:abaqus scripplot.py 之所以用python因为abaqus的界面是基于python的,用它来进行批处理或者后处理是比较不错的,希望能和大家分享abaqus的更多功能。.rpy文件记录一次操作中几乎所有的abaqus/CAE命令。 楼主需要的应该是.rpy.文件。前几天我记错了,我以前做的就…

qt mysql查询中文相等_请教:Qt如何实现查询数据库中具有中文表名的表

就好像我上面所说的,你要保证源代码转换后的中文是正确的编码。你估计是 msvc 编译的吧。那货默认 gbk 编码,但 tr 不知道,转换后到内存里面的文字可能就乱码了。办法好几个,不过不具可移植性。我现在的实践,不在字符串…

git 回退到某个commit_it lesson2 版本回退

回顾上次的知识:1,首先git init 初始化文件的状态,使用git管理文件。2,git add xxx 告诉git把xxx文件添加到仓库3,git commit -m ‘xxxx’告诉git把文件提交到仓库 并对提交的内容作解释(‘xxxx’&#xff…

python数据处理模块pandas_13. Python|模块总结:Pandas(数据处理)|【老W笔记】...

一、基本操作0. 导入模块import pandas as pd1. 新建DataFrame下面的例子中,我们新建一个有3条记录2列属性的表格。3 条记录分别是Tom,Bob,Alice的个人信息,2列属性分别是name和age。新建属性列的语法形如df[XX] List,…