1. 前言
- 前面我们介绍了 allure 的快速入门,只是单纯的敲 allure 命令而已
- 其实 allure 还有内置的特性可以让我们在 pytest 代码里面用起来,然后我们生成的报告更加直观、详细、贴合管理层的心意…
2. Environment
可以理解成环境变量参数,没有什么实际作用,个人觉得只是为了让别人知道本次测试的运行环境参数而已,显示啥都是自己定的
注意:默认是没有的哦
2.1 如何添加Environment呢
- 通过创建 environment.properties 或者 environment.xml 文件,并把文件存放到 allure-results(这个目录是生成最后的 html 报告之前,生成依赖文件的目录)目录下,就是
--alluredir
后面跟的目录 - 像我这里目录就是 allure,所以放在allure下面
--alluredir allure
2.2 environment.properties
Browser=Chrome
Browser.Version=81.0.4044.92
Stand=Production
ApiUrl=127.0.0.1/login
python.Version=3.7.2
2.3 environment.xml
<environment>
<parameter>
<key>Browser</key>
<value>Chrome</value>
</parameter>
<parameter>
<key>Browser.Version</key>
<value>81.0.4044.92</value>
</parameter>
<parameter>
<key>Stand</key>
<value>Production</value>
</parameter>
<parameter>
<key>ApiUrl</key>
<value>127.0.0.1/login</value>
</parameter>
<parameter>
<key>python.Version</key>
<value>3.7.2</value>
</parameter>
</environment>
注意:都不可以写中文哦!!!!亲测!!会乱码
2.4 运行之后,我们看看 allure 报告的 environment
3. Categories
直译:分类
通俗理解:测试用例结果的分类
默认情况下,有两类缺陷:
- Product defects 产品缺陷(测试结果:failed)
- Test defects 测试缺陷(测试结果:error/broken)
我们是可以创建自定义缺陷分类的,将 categories.json 文件添加到 allure-results 目录即可(和上面environment.properties 放同一个目录)
3.1 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"]
}
]
3.2 讲下参数的含义
- name:分类名称
- matchedStatuses:测试用例的运行状态,默认 [“failed”, “broken”, “passed”, “skipped”, “unknown”]
- messageRegex:测试用例运行的错误信息,默认是
.*
,是通过正则去匹配的 - traceRegex:测试用例运行的错误堆栈信息,默认是
.*
,也是通过正则去匹配的
3.3 注意
这里的 name 是可以写中文的哦!
4. Flaky test
用法:在类或者方法上直接加@Flaky
官方也说了:可以将整个测试类标记为 Flaky
4.1 那什么是 Flaky 呢?
- 简单来说就是,不够稳定的测试用例集,有可能前阵子还运行成功,过阵子就运行失败,理解成“闪烁”
- 标记成 Flaky 的好处就是:当用例失败的情况下,我们能获取足够详细的信息,毕竟有可能某些测试用例是非常重要的
- 如果不标记为 Flaky 的话,可能就要禁用这些测试