微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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-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 ===========================================================================

报告:

在这里插入图片描述

你还可以通过 --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('测试两个正数相加')
    def test_first(self):
        assert add(3, 4) == 7

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

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

    @allure.story('测试两个负数相加')
    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 ===========================================================================

报告:

在这里插入图片描述

你也可以通过 --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%]

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]

报告:

在这里插入图片描述

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

示例:

# 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]

报告:

在这里插入图片描述

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

报告:

在这里插入图片描述


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)

报告:

在这里插入图片描述

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

报告:

在这里插入图片描述


注意:

@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/#_pytest

作者:Leozhanggg

出处: https://www.cnblogs.com/leozhanggg/p/14059844.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐