脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Pytest测试报告工具Allure的高级用法

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

2022-07-08 10:59小旭2021 Python

这篇文章介绍了Pytest测试报告工具Allure的高级用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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-pyPytest>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-pyPytest
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-pyPytest>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-pyPytest
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-pyPytest>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-pyPytest
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-pyPytest>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-pyPytest
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:UsersPublicPicturesSample PicturesKoala.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

延伸 · 阅读

精彩推荐
  • Python详解python中的 is 操作符

    详解python中的 is 操作符

    is 操作符是Python语言的一个内建的操作符。它的作用在于比较两个变量是否指向了同一个对象。下面通过本文给大家详细介绍python中的 is 操作符,需要的朋...

    海纳10092020-12-29
  • Python详解Python中import机制

    详解Python中import机制

    这篇文章主要介绍了Python中import机制的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下...

    Python学习者6842020-09-12
  • PythonPython可视化神器pyecharts之绘制地理图表练习

    Python可视化神器pyecharts之绘制地理图表练习

    这篇文章主要介绍了Python可视化神器pyecharts之绘制地理图表,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下...

    王小王_12311042022-07-07
  • Pythonyolov5 win10 CPU与GPU环境搭建过程

    yolov5 win10 CPU与GPU环境搭建过程

    这篇文章主要介绍了yolov5 win10 CPU与GPU环境搭建过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    JulyLi201916492021-10-22
  • PythonAI领域都在用Python即将被淘汰?网友预测未来的编程语言不会是TA

    AI领域都在用Python即将被淘汰?网友预测未来的编程语言不会是

    网友时隔一年再次发文狂怼Python!人民群众都喜欢的Python为何在未来一定会被淘汰?...

    新智元10252021-06-22
  • PythonFlask-蓝图 blueprint详情

    Flask-蓝图 blueprint详情

    这篇文章主要介绍了 Flask-蓝图 blueprint的相关资料,Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Fl...

    tigeriaf9592022-03-08
  • PythonPython五个极易混淆的核心概念

    Python五个极易混淆的核心概念

    最近一周思考总结了Python 5个比较容易混淆的核心概念,同时附上我最通俗的区分和理解方法,相信对你一定有帮助!...

    今日头条8682021-11-15
  • PythonPyQt4实现下拉菜单可供选择并打印出来

    PyQt4实现下拉菜单可供选择并打印出来

    这篇文章主要为大家详细介绍了PyQt4实现下拉菜单可供选择并打印出来,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Graduate_201713802021-02-02