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也在积极…

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

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

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

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

挖掘机燃料_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把数组流中的每一个值,使用所提供的函数执行一遍,一…

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,…

visual studio 设计器不显示_与城共生:南京朝天宫“参与性”城市设计

本课题致力于探索和理解目前中国城市迅速发展的过程中,老旧社区如何与城市共生共进。通过对南京老旧社区的充分调查和研究,选取了朝天宫古玩市场附近的街巷民居和鼓楼工人新村作为设计地块。社会结构的变迁以及城市空间形态的变化都对老旧社区正在进行冲…

mysql error code 1093_MySQL更新时ErrorCode:1093和ErrorCode:1175的解决办法

Error Code: 1093. You canError Code: 1093. You cant specify target table ws_product for update in FROM clause这个是我们在使用update或者delete语句时,在where条件里面加入的子查询导致的。例如如下的update语句:update table set type static …

安装mysql8.019命令符_MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干目录下载完成后解压解压完是这个样子配置初始化的my.ini文件的文件解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根目录下添加的my.ini(新建文本文件,将文件类型改为的.ini),写入基本配置:[mysqld]# …

入Java_初入Java的方法

Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序 输出Hello,world!中用到一个方法System.out.printfln();这里的printfln()就是一个方法,System是系统类,out是对象。1.什么是方法?方法是语句…

java method_JAVA Method的解析

java.lang.reflect.MethodMethodpublic final class Method extends Executable数据的层级结构Paste_Image.pngMethod中的方法boolean [equals].将此方法与指定的对象进行比较T extends [Annotation]T [getAnnotation]如果存在注释,则返回指定类型的注释否则返回为n…

java中this_多学习才能多赚钱之:java中this什么用

java中this什么用1、this调用当前属性:其主要作用是当需要给类中的数据进行初始化时,可以通过this来进行赋值,而不用随便定义一个变量来进行赋值,更有利于代码的阅读与理解(推荐教程:java教程)class Book{//定义书的类…

java api 英文_教你查阅Java API 英文文档(JDK 11)

然后找到“Specifications”并点击 API Documentation比如我们在别人的源码里看到了方法[也叫函数]: Scanner input new Scanner(System.in);所以搜索一下右上角 Scanner,对比我们看到的源码里import,发现是java.util包里的,所以…