注意事项:
1. allure需要jdk和环境变量配置后重新打开PyCharm(环境变量Path中配置allure命令行工具的安装目录到bin目录下)
2. 如果重新打开还会报错allure: 不是可运行程序或者命令..., 就用管理员身份打开PyCharm
常用装饰器:
1. 显示测试步骤:
@allure.step("") 在报告上显示测试用例步骤说明的内容
举例说明:
import allure
@allure.step("第二步,运算")
def calc(num1,num2):
return num1 + num2
@allure.step("第一步,传参")
def get_calc():
return calc(1,2)
@allure.step("第三步,打印")
def test_print():
a = get_calc()
print(a)
上面这样按代码顺序写步骤, 在报告上看还是比较乱的,
下面这样直接写步骤, 在报告上看是按照顺序的,但不会显示参数...(自己选择吧
代码:
import allure
def calc(num1,num2):
return num1 + num2
def get_calc():
return calc(1,2)
@allure.step("第一步,传参")
@allure.step("第二步,运算")
@allure.step("第三步,打印")
def test_print():
a = get_calc()
print(a)
"""
step() 只有一个参数,就是title,输入什么,在allure上就显示什么
"""
2. 按层级显示项目名、模块名、用例名等, 总之就是四个层级, 写了就会显示, 不写就不显示
@allure.epic("") 敏捷里面的概念,定义史诗,往下是 feature
@allure.feature("") 功能点的描述,理解成模块往下是 story
@allure.story("") 故事,往下是 title
@allure.title("") 修改在报告上显示测试用例标题的内容
举例说明:
import allure
@allure.epic("项目名称: xxx项目")
@allure.story("第三个层级1")
@allure.story("第三个层级2")
@allure.feature("模块名: xx模块")
@allure.feature("模块名: xxx模块")
@allure.title("测试用例名称")
def test_epic012(self):
print("层级测试.")
一条用例可以同时用多个, 不过一般应该也用不上多个...
还可以使用@pytest.mark.parametrize实现动态名称, 举例如下:
import alllure
import pytest
datas = ["1","2",3]
@allure.title("动态名称标题{test_datas}")
@pytest.mark.parametrize("test_datas",datas)
def test_dynamic001(self,test_datas):
print(test_datas)
效果:
3. 上传一个实时编写的文件
allure.attach(body, name, allure.attachment_type, extension)
不是装饰器,在函数内部使用, 作用: 上传当前直接编写的附件
参数说明:
body: "直接写文件内容"
name: "文件内容的名称"
allure.attachment_type: 设置文件的格式
extension: 忘记了,没用过,不写就行了
3.1 上传一个已经编写好的文件
allure.attach.file(source, name, allure.attachment_type, extension)
参数说明:
source: "写需要上传的附件的文件路径, 最好写绝对路径"
其他参数和上面一样
4. 给用例添加详细描述
@allure.description() 可以添加足够详细的测试用例描述,以便于管理层查看
三种语法格式:
① @allure.description(str)
② 在测试用例函数声明下方添加 """ """
③ @allure.description_html(str):相当于传一个HTML代码组成的字符串
上面3和4的举例说明:
import allure
@allure.description("""
这里有一个乖巧的记事本噢,是实时编写的!
""")
@allure.link("www.baidu.com",name="百度")
def test_txt():
allure.attach("我是一个乖巧的记事本", "附件-记事本", allure.attachment_type.TEXT)
print("测试上传附件: 是实时编写的txt")
@allure.description_html("""
<h1 style="color:skyblue;">这里是有一个已经编写好的文件附件</h1>
<p>点击下面的测试步骤就能看到拉...</p>
""")
@allure.link("https://www.sohu.com","搜狐")
def test_txt_file():
# 当前文件的同级目录下必须已有 demo.txt 文件
allure.attach.file("demo.txt", "附件-记事本-文件",
allure.attachment_type.TEXT)
print("测试上传附件: 是已经编写好的文件")
@allure.title("三引号函数")
@allure.issue("https://www.baidu.com","Bug链接")
def test_description():
"""
这里是用三引号写的测试描述
"""
print("三引号")
5. 添加链接
@allure.link(url, name) 访问链接
@allure.issue(url, name) BUG链接(页面多个虫子标识)
@allure.testcase(url, name) 测试用例链接
参数说明:
url是链接
name是显示在allure报告的名字,如果不传就是显示完整的链接
6. 标记用例等级
@allure.severity("")
有以下5个等级参数:
blocker 阻塞缺陷(功能未实现,无法下一步)
critical 严重缺陷(功能点缺失)
normal 一般缺陷(边界情况,格式错误)
minor 次要缺陷(界面错误与ui需求不符)
trivial 轻微缺陷(必须项无提示,或者提示不规范)
可以根据测试用例的重要性划分测试用例等级,如果没指定等级,默认为normal级别
举例说明:
import allure
@allure.severity("blocker")
def test_login():
print("登录")
"""
如果有很多测试用例,现在只想做个快速的回归测试,
只测试用例级别为 blocker 和 critical 级别的测试用例,
cmd命令:
"""
pytest --alluredir=./report/allure --allure-severities=blocker,critical
""" 如果只执行blocker级别的用例 """
pytest --alluredir=./report/allure --allure-severities=blocker
7. 有的装饰器也可以在测试用例内部使用,
allure.dynamic.feature("动态层级模块")
举例说明:
import allure
def test_dynamic001(self,test_datas):
print(test_datas)
allure.dynamic.feature("动态层级模块")
allure.dynamic.epic("动态层级史诗")
allure.dynamic.story("动态层级故事")
allure.dynamic.link("https://www.baidu.com",name="百度网址")
其他
1. 安装配置allure
① 首先使用命令安装: pip install allure-pytest
② 然后下载Allure工具: Allure命令行工具下载
配置allure命令行工具的环境变量到bin目录下
配置完成后验证命令: allure --version
2. 设置allure报告的运行环境:
① environment.properties
② environment.xml (个人觉得这个有点麻烦, 用上面的就行了...)
该文件存放目录: 和要生成json文件的目录放一块
目前就这些, 后面有时间会补充些常遇到的问题, 要怎么解决
待补充:
1. 生成报告后打开网页显示loading...