文章目录
- 1.Allure配置安装
- 2.使用
-
- 基本命令
- 报告美化
-
- 1.**前置条件**
- 2.**用例步骤**
- **3.标题和描述**
- **4.用例优先级**
- 3.进阶用法
-
- allure+parametrize参数化
- parametrize+ids
- parametrize+@allure.title()
- 4.动态化参数
- 5.环境信息
-
- **方式一**
- **方式二**
- 6.用例失败截图
1.Allure配置安装
要求:
1.需要安装jdk环境
2.下载Allure安装包,下载地址:Allure下载地址
3.解压后放置英文路径下并配置环境变量PATH
验证:allure --version
4.安装allure-pytest
插件pip install allure-pytest
验证:pip show allure-pytest
2.使用
基本命令
1.使用allure时需要在cmd中执行,可以使用os.system
命令省去在cmd窗口中再次执行一次;
import os
import pytest
def test_01():
print('开始登录')
def test_02():
print('上传数据')
def test_03():
print('数据浏览')
if __name__ == '__main__':
pytest.main(['-sv','test_allure01.py','--alluredir', './result'])
#pytest.main(['test_allure01.py','--alluredir', './result','--clean-alluredir'])
os.system('allure generate ./result -o ./report --clean')
-
'-sv','test_allure01.py'
表示执行指定的测试文件并在控制台中输出; 注:使用‘-sv’后,测试报告中就不会再记录控制台的信息了;
-
'--alluredir', './result'
表示创建allure报告的路径,allure生成的报告文件都是json文件
-
'--clean-alluredir'
表示清除allure之前生成的json数据,如果不加这个参数会导致:如果对某些用例进行注释或删除,生成的测试报告仍会有之前的记录数据; -
os.system('allure generate ./result -o ./report --clean')
表示在main中转换allure生成的报告文件为html格式; -
./result -o :开始执行上面allure 生成的json文件
-
./report :生成的html格式报告存放路径
-
–clean:清除之前生成的报告,但是不会清除文件,记录仍会保留
-
使用pytest -h可以查看相关参数
–alluredir=DIR 在指定目录中生成 Allure 报告(目录可能不存在)
–clean-alluredir 如果存在,则清理 alluredir 文件夹
–allure-no-capture 不将 pytest 捕获的日志/标准输出/标准错误附加到报告中
–inversion=INVERSION 运行不在测试计划中的测试
执行完后会生成很多文件,右键浏览器中打开index.html文件
报告美化
1.前置条件
前置条件只要在测试用例中使用到,测试报告中会自动添加上用例前置函数的名称;
conftest.py
import pytest
@pytest.fixture
# @allure.title('前置准备') # 可以修改fix01的名字
def fix01():
print('用例准备前置工作')
test_allure01.py
import os
import allure
import pytest
@allure.step('步骤1:执行登录')
def login():
print('开始登录')
print('输入账号')
print('输入密码')
@allure.step('步骤2:上传数据')
def upload_data():
print('点击上传按钮')
print('上传数据')
def test_01(fix01):
# 测试用例中调用登录业务
login()
def test_02():
# 调用登录业务
upload_data()
2.用例步骤
使用装饰器@allure.step()
在需要说明的测试步骤函数上装饰后,在测试用例的测试步骤上就能显示出来;
@allure.step('步骤1:执行登录')
会带上函数中的传参和对应的值
@allure.step("登陆")
def log(user, pwd):
print(user)
print(pwd)
@pytest.fixture
def fix01():
log('zz', '123')
print('用例准备前置工作')
``with allure.step(‘步骤1:执行登录’)`不会带上函数里面的传参
def log(user, pwd):
with allure.step('用户名'):
print(user)
with allure.step('密码'):
print(pwd)
@pytest.fixture
def fix01():
log('zz', '123')
print('用例准备前置工作')
3.标题和描述
import os
import allure
import pytest
@allure.step('步骤1:执行登录')
def login():
print('开始登录')
print('输入账号')
print('输入密码')
@allure.step('步骤2:上传数据')
def upload_data():
print('点击上传按钮')
print('上传数据')
class TestUpload:
@allure.story("一级模块") # 表示一级模块,同名的一级模块会把用例归纳在一起
@allure.title("登录") # 用例的title
@allure.issue("http://127.0.0.1:8080/zentao/buge-login.html", name=