allure 安装
allure 安装文件下载路径
https://github.com/allure-framework/allure2/releases/tag/2.14.0
解压后对其 bin 目录 配置系统环境变量即可在命令行中调用。
>E:\python_project\pythonProject> allure --version
>2.14.0
allure 报告定制
对于原始的报告,内容是非常单薄的,而且缺少必要的描述,只有编写用例的人才知道这个用例时什么,并不明了。因此需要进行定制化的添加内容。
可能需要注意的模块问题
pytest-allure-adaptor 模块,一个在网上资料经常出现的东西,利用这个模块也可以进行报告的定制化。但不建议使用,因为版本的兼容问题可能会导致安装后出现运行报错。 对于简单够用的来说,直接使用 allure 模块即可。
import allure
简单够用的定制操作
用例分组
- feature
一般用在模块或者类前,分组级别较高。@allure.feature("模块t1")
class Test_t1:
- story
一般用在用例前,作为用例的名称。@allure.story('测试用例 002')
def test_002(self):
- title
一般用在用例前,与 story 作为用例的名称。@allure.title('测试用例 003')
def test_003(self):
@allure.story() 与 @allure.title() 的区别在于使用 story 的用例其执行结果会统一归在一个组中,而使用 title 的用例则会按照执行顺序显示。具体可看前面的定制后的报告图。
用例描述
用例等级
用例步骤
对于用例的步骤有两种方法可以标记:
-
@allure.step(‘test step 1’) 这种方式是用于对方法的嵌套,如: @allure.step('步骤1:1')
def step1(self):
print('1')
@allure.step('步骤2:2')
def step2(self):
print('2')
@allure.title('测试用例 001')
def test_001(self):
self.step1()
self.step2()
-
with allure.step(‘test step 1’) 这种方式是用在用例内部的,需要将对应的步骤代码写到 with allure.step() 下,效果请见 定制报告图2 ,代码应用如下:
def test_020(self):
with allure.step('步骤1:输出用例编号'):
print("020")
with allure.step('步骤2:执行断言'):
assert url == 'test.com'
报告内容的定制代码行数,可能不比单纯的用例代码行数少,要做出详细、令人一目了然且满意的报告,也并不简单,需要耗费不少的时间。
报告的语言显示可以在页面左侧菜单下选择。 若生成的报告打开时,数据一直显示加载中,不能正常查看,则为打开方式的问题,利用pycharm右键打开报告即可。
logo定制
修改对应的 css 配置文件,可对报告的 logo 及菜单栏标题进行定制修改。
启用自定义模块
plugins:
- junit-xml-plugin
- xunit-xml-plugin
- trx-plugin
- behaviors-plugin
- packages-plugin
- screen-diff-plugin
- xctest-plugin
- jira-plugin
- xray-plugin
- custom-logo-plugin
修改 css 配置文件
.side-nav__brand {
background: url(logo.png) no-repeat left center !important;
margin-left: 15px;
width: 240px;
height: 75px;
}
.side-nav__brand span{
display: none;
}
.side-nav__brand:after {
content: "DFDK";
margin-left: 20px;
width: 68px;
height: 86px;
position: fixed;
top: 36px;
left: 31px;
font-size: 42px;
font-weight: 300;
}
修改后重新生成报告即可应用。
生成 allure 报告
对于报告的生成,若所选择的数据目录或报告输出目录不存在,需要先创建目录。
import pytest
import os
if __name__ == '__main__':
pytest.main(['-v','-s','--count','1','--repeat-scope','session','--html=result2V.html','test_data.py','--alluredir','./temp'])
## --count 为循环执行次数
## --repeat-scope 为指定循环的范围,session为循环的是会话循环, 1 2 1 2 1 2,若不指定,则默认为用例循环,及 1 1 1 2 2 2
## --clean-alluredir 如需生成的报告只有最新的数据,可添加该参数
os.system('allure generate ./temp -o ./report --clean')
## --clean 每次生成报告都会将已有的报告删除,若需要保留每次的报告,需要指定新的目录或者报告名称
|