Allure
1. Allure简介
1.1 关于Allure
Allure框架是一个灵活轻量级多语言测试报告工具,它不仅可以以WEB的方式展示简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。Allure报告简化了常见缺陷的统计:失败的测试可以分为BUG和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。
Allure官方文档地址:https://docs.qameta.io/allure/
1.2 Allure安装
step1.下载JDK,下载地址:https://www.oracle.com/java/technologies/downloads/,配置环境变量:JAVA_HOME=D:\Program Files\Java,Path中添加%JAVA_HOME%\bin,在命令行中输入以下命令,不报错,即代表设置成功。java -version
step2.下载Allure命令行,下载地址:https://github.com/allure-framework/allure2/releases/,将下载到本地的allure压缩包解压到指定目录,并添加相应的环境变量Path=D:\Program Files\Allure\allure-2.16.0\bin,在命令行中输入allure,不出现报错即可
1.3 Allure用法
allure命令行语法格式:allure [options] [command] [command options]

#常用options和commands #Options -q, --quiet:切换到静默模式,默认关闭 -v, --verbose:切换详细日志模式,默认关闭 #Commands generate:生成allure的HTML报告 -c, --clean:在生成新报告前,清理之前生成报告的目录,默认关闭 --config:Allure命令行配置文件路径,如果指定将覆盖--profile和--configDirectory所设定的值 --configDirectory:Allure命令行配置文件目录,默认值为:ALLURE_HOME目录 --profile:Allure命令行配置文件 -o, --report-dir, --output:指定生成报告的目录,默认allure-report serve:启动serve并查看报告 基本语法:serve [options] allure结果目录 --config:Allure命令行配置文件路径,如果指定将覆盖--profile和--configDirectory所设定的值 --configDirectory:Allure命令行配置文件目录,默认值为: ALLURE_HOME目录 --profile:Allure命令行配置文件 -h, --host:指定访问报告的web服务器地址 -p, --port:指定访问报告的web服务器地端口,默认为0 open:查看报告 基本语法:open [options] allure报告目录 -h, --host:指定访问报告的web服务器地址 -p, --port:指定访问报告的web服务器地端口,默认为0 1.generate常用参数主要为-c和-o 2.open常用参数主要为-h和-p
1.4 Allure报告结构
- Overview:报告总览
- Categories:类别,允许用户创建自定义的类别。默认分为失败和错误,在执行结果是其中一类时则被归到相应的类中。
- Suites:测试套件,即所有用例的层级关系,可以按package/module/class/method进行查找
- Graphs :测试结果图形化,包含测试用例的运行结果分布图、耗时、优先级等
- Timeline: 时序图,将测试用例的执行顺序和测试时间以可视化形式展现出来
- Behaviors:行为驱动,根据Epic、Feature、Story来对测试用例进行分组
- Packages: 用例按Package进行分组,根据测试结果按不同的Package进行分组,并以树形结构进行展示
1.5 Allure特性
1.5.1 Flaky
该特性用来标识不够稳定的测试用例集,即有些用例运行时,时而成功时而失败。其用意主要如下所示:
当用例失败的情况下,能够获取足够详细的信息
不标记为Flaky的话,可能就要禁用这些测试
用法如下所示:

@Flaky public void aTestWhichFailsFromTimeToTime { ... }
1.5.2 Environment
Environment表示环境变量参数,用来显示本次测试运行环境的参数。在生成allure-result结果前,通过创建environment.properties或environment.xml文件,并把文件放置到allure-result目录中。
environment.properties

Browser=Chrome
Browser.Version=95.0
Stand=Production
environment.xml

<environment> <parameter> <key>Browser</key> <value>Chrome</value> </parameter> <parameter> <key>Browser.Version</key> <value>95.0</value> </parameter> <parameter> <key>Stand</key> <value>Production</value> </parameter> </environment>
environment.properties和environment.xml不允许存在中文
1.5.3 Categories
默认分类分为两种,如下所示:
Product defects:产品缺陷,测试结果为失败(failed tests)
Test defects:测试缺陷,测试结果为错误(broken tests)
除了默认分类之外,也可以自定义创建分类。通过创建categories.json文件,在生成allure-result结果前,提前放置到该目录即可。
categories.json

[ { "name": "Ignored tests", "matchedStatuses": ["skipped"] }, { "name": "Infrastructure problems", "matchedStatuses": ["broken", "failed"], "messageRegex": ".*bye-bye.*" }, { "name": "Outdated tests", "matchedStatuses": ["broken"], "traceRegex": ".*FileNotFoundException.*" }, { "name": "Product defects", "matchedStatuses": ["failed"] }, { "name": "Test defects", "matchedStatuses": ["broken"] } ]
- name(必填项):分类名称
- matchedStatuses(可选项):测试用例的运行结果,默认值["failed", "broken", "passed", "skipped", "unknown"]
- messageRegex(可选项):测试用例运行的错误信息,默认是 .* ,通过正则进行匹配
- traceRegex(可选项):测试用例运行的错误堆栈信息,默认是 .* ,通过正则进行匹配
2. Allure与pytest集成
2.1 Allure行为驱动
allure除了支持Pytest自带的特性之外(fixture、parametrize、xfail、skip),自身也有非常强大的特性,下面来详细介绍。
2.1.1 @allure.step
allure报告允许对每个测试用例的执行步骤进行详细说明,该功能通过@allure.step()装饰器来实现,@allure.step()只有一个参数,就是title
2.1.2 @allure.attach
allure报告支持添加附件并进行展示,可用以补充测试结果,第一种基本语法如下所示:
allure.attach(body, name, attachment_type, extension)
- body:要显示的附件内容
- name: 附件名称
- attachment_type:附件类型,属于allure.attachment_type里面的一种
- extension:附件扩展名
allure.attachment_type主要有TEXT、CSV、HTML、XML、JSON、YAML、PCAP、PNG、JPG、SVG、GIF、BMP、MP4、OGG、WEBM、PDF等
第二种基本语法如下所示:
allure.attach.file(source, name, attachment_type, extension)
- source:上传文件所在路径
- 其他参数和上面参数一致
2.1.3 @allure.description
给用例添加详细的描述,常见语法有三种:
1.@allure.description(str)
2.在测试用例函数声明下方添加 """ """
3.@allure.description_html(str)
相当于传一个HTML代码组成的字符串,类似 allure.attach()中传HTML
方式一和方式二作用和效果是一样的
2.1.4 @allure.title
添加测试用例标题,支持占位符传递关键字参数(动态标题,结合(@pytest.mark.parametrize使用)
如果没有添加 @allure.title()的话,测试用例的标题默认就是函数名
>>>>>待续