allure用法(一)-配置信息及基本用法


allure是一个轻量级的,灵活的,支持多语言的测试报告工具

优点:

  • 可以为dev/qa 提供 详尽的测试报告、测试步骤、日志
  • 可以为管理层提供更好的统计报告
  • Java语言开发的
  • 可以集成到jenkins

配置信息(显示在测试报告中):

  1.environment.properties或environment.xml  自己在allure-results目录下创建,存放环境信息

         

   2.categories.json   测试结果的分类,默认有两类缺陷,Product defects和 Test defects,同样放在allure-results目录下

[
  {
    "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"]
  }
]

      参数解释:

           name:分类名称

   matchedStatuses:测试用例的运行状态,默认["failed", "broken", "passed", "skipped", "unknown"]

   messageRegex:测试用例运行的错误信息,默认是 .*  正则匹配

   traceRegex:测试用例运行的错误堆栈信息,默认是 .*  正则匹配

      配置信息在报告中的显示(注意生成报告的目录也要在allure-results目录下,才可以看到environment信息,否则会显示为空)

         

执行: 

  • 安装allure-pytest插件
pip install allure-pytest
  • 运行

          先测试执行期间收集结果

           --alluredir 用于指定存储运行结果的路径

pytest [测试文件] -s -q --alluredir=./result/

          查看测试报告

allure serve ./result/

allure常用特性

在报告中查看测试功能,子功能或场景,测试步骤,测试附加信息

@feature  @story  @step  @attach

使用

  • import allure
  • 功能上加@allure.feature('功能名称')
  • 子功能上加@allure.story('子功能名称')
  • 步骤上加@allure.step('步骤细节')
  • @allure.attach('具体文本信息'),需要附加的信息,可以是数据、文本、图片、视频、网页
  • feature相当于一个大功能,一个模块,将case分到某个feature中,story对应这个功能或模块下的不同场景,分支功能,feature和story类似父子关系

只测试某一功能时可以增加限制过滤

pytest 文件名 --allure-features '功能模块' --allure-stories '子功能模块'

allure-step

测试过程中每一个步骤,一般放在具体逻辑方法中,可以放在关键步骤

用法:

@allure.step() 只能以装饰器的方式放在类或方法上面

 with allure.step():可以放在测试方法里,测试步骤的代码需要被该语句包含

例如:

import pytest
import allure

@allure.feature("测试allure功能") class Test_param: @allure.story("测试子模块功能") # @myskip def test_param(self,a=1,b=2): with allure.step("测试a+b的值"): assert a+b == 3 print(a+b)

运行结果:

 

allure-link

 @allure.link(“链接地址”,name="")  name是为链接地址指定一个名称

    @allure.link("http://www.baidu.com",name="百度一下")
    def test_link(self):
        print("测试链接")
        pass

运行结果: