Pytest测试报告工具Allure的高级用法

作者:小旭2021 时间:2023-06-20 17:21:09 

Allure除了具有Pytest基本状态外,其他几乎所有功能也都支持。

1、严重性

如果你想对测试用例进行严重等级划分,可以使用@allure.severity装饰器,它可以应用于函数,方法或整个类。

它以allure.severity_level枚举值作为参数,分别为:BLOCKER(中断),CRITICAL(严重),NORMAL(常规),MINOR(轻微),TRIVIAL(不重要)。

示例:

# test_sample.py
import allure

# 两数相加
def add(x, y):
   return x + y

# 测试类
@allure.severity(allure.severity_level.TRIVIAL)
class TestAdd:

@allure.severity(allure.severity_level.MINOR)
   def test_first(self):
       assert add(3, 4) == 7

@allure.severity(allure.severity_level.NORMAL)
   def test_second(self):
       assert add(-3, 4) == 1

@allure.severity(allure.severity_level.CRITICAL)
   def test_three(self):
       assert add(3, -4) == -1

@allure.severity(allure.severity_level.BLOCKER)
   def test_four(self):
       assert add(-3, -4) == -7

运行:

E:\workspace-py\Pytest>pytest test_sample.py --alluredir=report --clean-alluredir
========================================================================== test session starts ==========================================================================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
rootdir: E:\workspace-py\Pytest
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collected 4 items                                                                                                                                                        

test_sample.py ....                                                                                                                                                [100%]

=========================================================================== 4 passed in 0.06s ===========================================================================

报告:

Pytest测试报告工具Allure的高级用法

你还可以通过--allure-severities选项指定严重等级运行,多个以逗号分隔。

E:\workspace-py\Pytest>pytest test_sample.py --allure-severities normal,critical
========================================================================== test session starts ==========================================================================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
rootdir: E:\workspace-py\Pytest
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collected 4 items                                                                                                                                                        

test_sample.py ..                                                                                                                                                  [100%]

=========================================================================== 2 passed in 0.02s ===========================================================================

2、功能

如果你想对测试功能、测试场景进行行为描述,可以分别使用装饰器:@allure.feature@allure.story

示例:

# test_sample.py
import allure

# 两数相加
def add(x, y):
   return x + y

@allure.feature('测试类')
class TestAdd:

@allure.story('01测试两个正数相加')
   def test_first(self):
       assert add(3, 4) == 7

@allure.story('02测试负数正数相加')
   def test_second(self):
       assert add(-3, 4) == 1

@allure.story('03测试正数负数相加')
   def test_three(self):
       assert add(3, -4) == -1

@allure.story('04测试两个负数相加')
   def test_four(self):
       assert add(-3, -4) == -7

运行:

E:\workspace-py\Pytest>pytest test_sample.py --alluredir=report --clean-alluredir
========================================================================== test session starts ==========================================================================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
rootdir: E:\workspace-py\Pytest
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collected 4 items                                                                                                                                                        

test_sample.py ....                                                                                                                                                [100%]

=========================================================================== 4 passed in 0.06s ===========================================================================

报告:

Pytest测试报告工具Allure的高级用法

你也可以通过--allure-features--allure-stories选择指定具体功能和故事运行,多个以逗号分隔。

E:\workspace-py\Pytest>pytest test_sample.py --allure-stories 01测试两个正数相加
========================================================================== test session starts ==========================================================================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
rootdir: E:\workspace-py\Pytest
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collected 4 items                                                                                                                                                        

test_sample.py .                                                                                                                                                   [100%]

=========================================================================== 1 passed in 0.02s ===========================================================================

3、步骤

如果你想对每个测试调用进行非常详细的逐步说明,可以通过@allure.step装饰器来实现(固件同样支持)。

该装饰器会将方法或函数的调用与提供的参数一起添加到报表中,并且可以包含一条描述行,该行支持位置和关键字参数。

示例:

# test_sample.py
import pytest
import allure

@allure.step('两数相加:{0} + {y}')
def add(x, y):
   r = x + y
   print_res(r)
   return r

@allure.step
def print_res(r):
   print('计算结果:', r)

class TestLearning:
   data = [
       [3, 4, 7],
       [-3, 4, 1],
       [3, -4, -1],
       [-3, -4, -7],
   ]
   @pytest.mark.parametrize("data", data)
   def test_add(self, data):
       assert add(data[0], data[1]) == data[2]

报告:

Pytest测试报告工具Allure的高级用法

4、标题

如果你想让测试标题更具可读性,可以使用@allure.title装饰器,该装饰器支持参数的占位符并支持动态替换。

示例:

# test_sample.py
import pytest
import allure
def add(x, y):
   return x + y
class TestLearning:
   data = [
       [3, 4, 7],
       [-3, 4, 1],
       [3, -4, -1],
       [-3, -4, -7],
   ]
   @allure.title("测试用例-{data}")
   @pytest.mark.parametrize("data", data)
   def test_add(self, data):
       assert add(data[0], data[1]) == data[2]

报告:

Pytest测试报告工具Allure的高级用法

5、描述

如果你想添加测试的详细说明,可以通过添加测试方法描述信息,也可以使用装饰器@allure.description@allure.description_html

示例:

# test_sample.py
import allure

# 被测功能
def add(x, y):
   return x + y

# 测试类
class TestLearning:

@allure.description('测试正数相加')
   def test_first(self):
       assert add(3, 4) == 7

@allure.description_html('<h1> 测试负数相加 </h1>')
   def test_second(self):
       """你也可以在这里添加用例的描述信息,但是会被allure装饰器覆盖"""
       assert add(-3, -4) == -7

报告:

Pytest测试报告工具Allure的高级用法

6、附件

如果你想在报告中显示不同类型的附件,可以通过以下两种方式来实现:
allure.attach(body, name, attachment_type, extension)
allure.attach.file(source, name, attachment_type, extension)

示例:

import allure

def test_multiple_attachments():
   allure.attach.file(r'C:\Users\Public\Pictures\Sample Pictures\Koala.jpg', attachment_type=allure.attachment_type.JPG)
   allure.attach('<head></head><body> 测试页面 </body>', 'Attach with HTML type', allure.attachment_type.HTML)

报告:

Pytest测试报告工具Allure的高级用法

7、链接

如果你想关联缺陷追踪系统或测试管理系统,你可以使用装饰器@allure.link@allure.issue@allure.testcase

示例:

import allure

@allure.link('http://www.baidu.com')
def test_with_named_link():
   pass

@allure.issue('101', '缺陷问题描述')
def test_with_issue_link():
   pass

@allure.testcase('http://this.testcase.com', '测试用例标题')
def test_with_testcase_link():
   pass

报告:

Pytest测试报告工具Allure的高级用法

注意:

@allure.issue 将提供带有小错误图标的链接,该描述符将测试用例ID作为输入参数,以将其与提供的问题链接类型的链接模板一起使用。
链接模板在 --allure-link-patternPytest 的配置选项中指定。链接模板和类型必须使用冒号指定:
pytest test_sample.py --alluredir=report --allure-link-pattern=issue:http://www.mytesttracker.com/issue/{}

官方文档地址:https://docs.qameta.io/allure/

来源:https://www.cnblogs.com/chenyablog/p/15145370.html

标签:Pytest,测试,报告,工具,Allure
0
投稿

猜你喜欢

  • python实现淘宝秒杀聚划算抢购自动提醒源码

    2022-12-04 11:43:15
  • python通过nmap扫描在线设备并尝试AAA登录(实例代码)

    2021-08-06 23:23:42
  • Vue+ECharts实现中国地图的绘制及各省份自动轮播高亮显示

    2024-04-27 16:12:40
  • python3利用smtplib通过qq邮箱发送邮件方法示例

    2023-12-17 06:34:24
  • .Net Core微服务网关Ocelot基础介绍及集成

    2024-05-11 09:26:10
  • python scipy求解非线性方程的方法(fsolve/root)

    2022-01-06 15:46:00
  • SQL SERVER 2008 无法附加数据库的解决方法

    2024-01-18 02:35:50
  • PHP中获取文件创建日期、修改日期、访问时间的方法

    2023-06-11 18:37:15
  • Python数学建模学习模拟退火算法约束条件处理示例解析

    2022-06-16 19:19:20
  • Python3.5编程实现修改IIS WEB.CONFIG的方法示例

    2022-04-22 15:27:55
  • python实现坦克大战

    2021-01-09 19:18:53
  • SQL Server 2019下载与安装教程(自定义安装)

    2024-01-25 07:15:47
  • Vue 实现从小到大的横向滑动效果详解

    2024-05-10 14:14:10
  • 用生成器来改写直接返回列表的函数方法

    2022-04-24 15:36:08
  • Python实现动态图解析、合成与倒放

    2022-09-22 12:53:23
  • BootStrap点击下拉菜单项后显示一个新的输入框实现代码

    2024-04-16 08:54:39
  • 贝聿铭写给年轻设计师的十点忠告

    2010-01-24 18:46:00
  • pandas 小数位数 精度的处理方法

    2022-12-16 20:40:05
  • 提升Go语言开发效率的小技巧实例(GO语言语法糖)汇总

    2023-07-08 10:01:26
  • 基于存储过程的详细介绍

    2024-01-21 06:29:19
  • asp之家 网络编程 m.aspxhome.com