Fork me on GitHub

【pytest-07】测试报告-allure

一、简介

allure

  • 轻量级、灵活的、支持多语言的测试报告工具
  • 多平台的、奢华的报告框架
  • 可以为开发、测试提供详尽的测试报告、测试步骤、日志
  • 为管理层提供高规格的统计报告
  • 使用 Java 开发,支持pytest、JavaScript、PHP、Ruby等
  • 可以集成到Jenkins

官网:

allure官网

二、安装并配置环境变量

Windows / Mac / Linux 通用安装方法:

下载 allure.zip 安装包,解压后配置环境变量即可:

配置路径(windos举例):

F:\从0到1开始搭建自动化测试框架\allure-2.17.3\bin  

在命令行输入allure --version,能出现版本说明allure命令行已经安装成功了

allure --version

结合 pytest 使用,需要安装 python 插件:

pip install allure-pytest 

三、allure特性及语法使用

1、@allure.step

allure报告最重要的一点是,它允许对每个测试用例进行非常详细的步骤说明
通过 @allure.step() 装饰器,可以让测试用例在allure报告中显示更详细的测试过程

@allure.step("第三步")
def nested_step():
    #具体测试步骤代码
    nested_step_with_arguments(1, 'abc')

2、allure.attach(挺有用的)

作用:allure报告还支持显示许多不同类型的附件,可以补充测试结果;自己想输出啥就输出啥,挺好的

语法: allure.attach(body, name, attachment_type, extension)

参数列表
body:要显示的内容(附件)
name:附件名字
attachment_type:附件类型,是 allure.attachment_type 里面的其中一种
extension:附件的扩展名(比较少用)

@allure.title("前置操作:登录")
@allure.step("第二步")
def step_with_nested_steps():
    allure.attach('在fixture后置操作里面添加一个附件txt', 'fixture后置附件',
                  allure.attachment_type.TEXT)
    nested_step()

3、@allure.title() (用例标题)

from time import sleep
import allure

import pytest
@allure.title("测试:title")
@allure.description("""
这是一个@allure.description装饰器
没有特别的用处
""")
@pytest.mark.parametrize("n", list(range(5)))
class TestWeibo:
    @allure.story("子功能/单个用例名称")
    def test_case1_01(self, open_weibo, n):
        sleep(1)
        print("查看微博热搜", n)

    def test_case1_02(self, open_weibo, n):
        sleep(1)
        print("查看微博范冰冰", n

4、@allure.description()

作用:
可以添加足够详细的测试用例描述

写法同上,查看3 

@allure.description("""
这是一个@allure.description装饰器
没有特别的用处
""")

5、@allure.feature("功能名称")

@allure.feature("测试采购合同模块")  # 通常对测试类进行装饰
class TestPurchaseContract:

6、@allure.story("子功能/单个用例名称")

@allure.story("测试同步标识灯功能") # 通常对单个用例进行装饰
def test_synchronize(self):
"""
测试 同步标识灯 功能
:return:
"""
r = self.pending_request.synchronize()
assert r["msg"] == "同步更新申购单红、绿、蓝灯状态成功"
assert r["success"] is True

7、Allure特性-severity(测试用例的优先级)

    class Severity(object):
        BLOCKER = 'blocker'
        CRITICAL = 'critical'
        NORMAL = 'normal'
        MINOR = 'minor'
        TRIVIAL = 'trivial'
    @allure.severity("minor")

1、 Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
2、 Critical级别:临界缺陷( 功能点缺失)
3、 Normal级别:普通缺陷(数值计算错误)
4、 Minor级别:次要缺陷(界面错误与UI需求不符)
5、 Trivial级别:轻微缺陷(必输项无提示,或者提示不规范
 

四、allure生成报告命令

1、执行测试命令

pytest -n auto --alluredir=allure

2、测试报告生成命令

allure serve allure

五、报告预览

 备注:

1、环境参数配置:environment.properties(需要放在allure目录下)

Browser=Chrome
Browser.Version=81.0.4044.92
Stand=Production
ApiUrl=pda
python.Version=3.7.2

2、测试类别配置文件categories.json(需要放在allure目录下)

[
  {
    "name": "忽略测试",
    "matchedStatuses": ["skipped"]
  },
  {
    "name": "Infrastructure problems",
    "matchedStatuses": ["broken", "failed"],
    "messageRegex": ".*bye-bye.*"
  },
  {
    "name": "Outdated tests",
    "matchedStatuses": ["broken"],
    "traceRegex": ".*FileNotFoundException.*"
  },
  {
    "name": "测试失败",
    "matchedStatuses": ["failed"]
  },
  {
    "name": "测试缺陷",
    "matchedStatuses": ["broken"]

  }
  ,
  {
    "name": "测试成功",
    "matchedStatuses": ["passed"]
  }
]

3、趋势模块不显示问题解决方案

原因:

allure-result文件中没有history文件夹

解决:

手动将allure-report中的history复制到allure目录下

 

 

 

  

  

 

 

  

posted @ 2022-04-05 23:46  橘子偏爱橙子  阅读(738)  评论(0编辑  收藏  举报