pytest测试框架——allure报告

这篇具有很好参考价值的文章主要介绍了pytest测试框架——allure报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pytest测试框架——allure报告


一、allure的介绍

Allure 是由Java 语言开发的一个轻量级,灵活的测试报告工具。
Allure多平台的 Report框架。
Allure 支持多语言,包括 python、JaveScript、PHP、Ruby 等。
可以为开发/测试/管理等人员提供详尽的的测试报告,包括测试类别、测试步骤、日志、图片、视
频等。
可以为管理层提供高水准的统计报告。
可以集成到Jenkins生成在线的趋势汇总报告。

二、allure的运行方式

收集结果:

pytest 测试模块/测试包/测试用例 --alluredir = 指定存储测试结果的路径

pytest --alluredir=./reports --clean-alluredir

生成在线的测试报告:
allure serve ./results

安装allure-pytest

三、allure报告的生成

方式一、在线报告、会直接打开默认浏览器展示当前报告

--clean-alluredir:清理已经生成的报告的历史记录

1、pytest 测试模块/测试包/测试用例 --alluredir = 指定存储测试结果的路径
2、生成在线的测试报告:
allure serve ./results

方式二、静态资源文件报告(带index.html、css、js等文件),需要将报告布置到web服务器上。

应用场景:如果希望随时打开报告,可以生成一个静态资源文件报告,将这个报告布署到web服务器上,启动web服务,即可随时随地打开报告。
解决方案:使用allure generate 生成带有 index.html 的结果报告。这种方式需要
两个步骤:
第一步:生成报告。

--clean:如果报告路径重复,清理上一次的报告

allure generate ./results --clean

-o:将测试报告生成指定的目录

allure generate ./results --clean -o ./reports

第二步:打开报告。

allure open allure-report

打开报告指定IP地址和端口号

-h 127.0.0.1 -p 8888

allure open ./reports -h 127.0.0.1 -p 8888

四、allure中装饰器

@allure.epic() epic描述 敏捷里面的概念,定义史诗,往下是feature
@allure.feature() 模块名称 功能点的描述,往下是 story
@allure.story() 用户故事 用户故事,往下是title
@allure.title(用例的标题)用例的标题 重命名 html 报告名称
@allure.step() 操作步骤 测试用例的步骤
@allure.testcase() 测试用例的链接地址对应功能测试用例系统里面的case
@allure.issue() 缺陷 对应缺陷管理系统里面的链接
@allure.description() 用例描述 测试用例的描述
@allure.severity() 用例等级 blocker, critical, normal, minor, trivial
@allure.link() 链接 定义一个链接,在测试报告展现
@allure.attachment() 附件 报告添加附件

1、实现给测试报告添加用例标题

通过使用装饰器@allure.title可以为测试用例自定义一个可阅读性的标题。
allure.title的三种使用方式:

a.直接使用@allure.title为测试用例自定义标题。

import allure

@allure.title('测试标题')
def test_with_title():
    assert True

b.@allure.title支持通过占位符的方式传递参数,可以实现测试用例标题参数化,动态生成测试用例标题。

@allure.title("参数化用例标题:参数1:{p1},参数2:{p2}")
@pytest.mark.parametrize('p1,p2,p3',[[1,1,2],[2,4,6]])
def test_with_title1(p1,p2,p3):
    assert p1+p2==p3

pytest测试框架——allure报告

c.allure.dynamic.title动态更新测试用例标题。

@allure.title('原始标题')
def test_with_title2():
    assert True
    allure.dynamic.title('更改后的标题')

2、allure报告中添加用例步骤

应用场景:编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。

方法一:使用装饰器定义一个测试步骤,在测试用例中使用。

import allure
import pytest




@allure.step
def simple_step1(step_param1,step_param2=None):
    """定义一个测试步骤"""
    print(f'步骤1:打开页面,参数1:{step_param1},参数2:{step_param2}')


@allure.step
def simple_step2(step_param):
    """定义一个测试步骤"""
    print(f'步骤1:完成搜索{step_param}功能')


@pytest.mark.parametrize('param1',['pytest','allure'],ids=['search pytest','search pytest'])
def test_parameterize_with_id(param1):
    simple_step2(param1)

@pytest.mark.parametrize('param1',[True, False])
@pytest.mark.parametrize('param2', ['value 1', 'value 2'])
def test_parametrize_with_two_parameters(param1, param2):
    simple_step1(param1,param2)

@pytest.mark.parametrize('param2',['pytest', 'unittest'])
@pytest.mark.parametrize('param1,param3', [[1,2]])
def test_parameterize_with_uneven_value_sets(param1, param2, param3):
    simple_step1(param1,param3)
    simple_step2(param2)

方法二:使用with allure.step()添加测试步骤。

@allure.title("搜索用例:{searchkey}")
@pytest.mark.parametrize("searchkey",['java','allure'])
def test_step_in_method(searchkey):
    with allure.step("测试步骤一:打开页面"):
        print("操作a")
        print("操作b")
    with allure.step(f"测试步骤二:搜索{searchkey}"):
        print(f"搜索操作{searchkey}")
    with allure.step("测试步骤三:断言"):
        assert True

pytest测试框架——allure报告

3、allure报告中添加用例链接

应用场景:将报告与bug管理系统或测试用例管理系统集成,可以添加链接装饰器
allure. link、@allure.issue和allure.testcase。

格式1: @allure.link (url, name)添加一个普通的link链接,name:起别名

import allure


@allure.link('http://www.baidu.com',name='这是一个链接')
def test_with_link():
    pass

pytest测试框架——allure报告

格式2: allure.testcase( url,name)添加一个用例管理系统链接。

TEST_CASE_LINK='http://www.baidu.com'

@allure.testcase(TEST_CASE_LINK,'用例管理系统')
def test_with_testcase():
    pass

pytest测试框架——allure报告

格式3: @allure.issue(url,name),添加bug管理系统链接。

@allure.issue('66666','bug管理系统')
def test_with_issue():
    pass

4、allure报告中添加用例分类

应用场景:可以为项目,以及项目下的不同模块对用例进行分类管理。也可以运行某个类别下的用例。
报告展示:类别会展示在测试报告的Behaviors栏目下。
Allure提供了三个装饰器:
@allure.epic:敏捷里面的概念,定义史诗,往下是feature。

import allure

@allure.epic('需求1')
class TestEpic:

    def test_case1(self):
        print('用例1')

    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')


@allure.epic('需求1')
class TestEpic1:

    def test_case1(self):
        print('用例1')

    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')

pytest测试框架——allure报告
场景:希望在报告中看到测试功能,子功能或场景。
子功能上加@allure.story、@allure.feature

@allure.feature:功能点的描述,理解成模块往下是story。
@allure.story:故事story是 feature的子集。

import allure

@allure.epic('需求1')
@allure.feature('功能模块1')
class TestEpic:

    @allure.story('子功能1')
    @allure.title('用例1')
    def test_case1(self):
        print('用例1')

    @allure.story('子功能2')
    @allure.title('用例2')
    def test_case2(self):
        print('用例2')

    @allure.story('子功能2')
    @allure.title('用例3')
    def test_case3(self):
        print('用例3')

    @allure.story('子功能1')
    @allure.title('用例4')
    def test_case4(self):
        print('用例4')

    @allure.story('子功能3')
    @allure.title('用例5')
    def test_case5(self):
        print('用例5')


@allure.epic('需求1')
@allure.feature('功能模块2')
class TestEpic1:

    @allure.story('子功能4')
    def test_case1(self):
        print('用例1')

    @allure.story('子功能5')
    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')



@allure.epic('需求2')
@allure.feature('功能模块1')
class TestEpic2:

    def test_case1(self):
        print('用例1')

    def test_case2(self):
        print('用例2')

    def test_case3(self):
        print('用例3')

pytest测试框架——allure报告

运行特定类别的用例

1、只运行epic名为”需求1“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-epics=需求1

pytest测试框架——allure报告

2、只运行feature名为”功能模块2“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-features=功能模块2

pytest测试框架——allure报告

3、只运行story名为”子功能1“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-stories=子功能1

4、只运行story名为”子功能2“和”子功能2“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-stories=子功能2,子功能3 -vs

5、运行story名为”子功能2“和 feature名”功能模块1“的测试用例

pytest demo1/test_allure_feature.py --alluredir=./reports --clean-all
uredir --allure-stories=子功能2 --allure-features=功能模块1

pytest测试框架——allure报告

总结

epic:相当于定义一个项目。
feature:相当于一个功能模块,相当于testsuite,可以管理很多个子分支story
story:相当于对应这个功能或者模块下的不同场景,分支功能。
epic 与feature、feature 与story类似于父子关系。

5、allure报告中添加用例描述

应用场景:Allure支持往测试报告中对测试用例添加非常详细的描述语,用来描述测试用例详情。
Allure添加描述的四种方式:
方式一:使用装饰器
@allure.description()传递一个字符串参数来描述测试用例。

import allure

@allure.description("""
多行描述信息:<br/>
通过传递字符串参数添加一段描述语句,</br>
使用装饰器@allure.description
""")
def test_description_string():
    assert True

pytest测试框架——allure报告

方式二:使用装饰器
@allure.description_ html传递一段HTML文本来描述测试用例。

@allure.description_html("""
<img class="index-logo-src" src="//www.baidu.com/img/flexible/logo/pc/result.png" alt="到百度首页" title="到百度首页">
""")
def test_description_html():
    assert True

pytest测试框架——allure报告

方式三:直接在测试用例方法中通过编写文档注释的方法来添加描述。会按照给定的格式展示,不需要添加<br/>

def test_description_desc():
    """
    直接写在测试用例中
    通过编写文档注释的方法
    来添加描述
    会按照给定的格式展示,不需要添加<br/>
    :return:
    """
    assert True

pytest测试框架——allure报告

6、allure报告中添加用例优先级

应用场景:用例执行时,希望按照严重级别执行测试用例。

解决:可以为每个用例添加一个等级的装饰器,用法: allure.severity。

Allure对严重级别的定义分为5个级别:

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

使用装饰器添加用例方法/类的级别。
类上添加的级别,对类中没有添加级别的方法生效。

未加级别标签的用例,在运行时,是不会被收集上来的
但是在类中没有加标签,会随着类上加的标签来收集的

import allure

未加级别标签的用例,在运行时,是不会被收集上来的
def test_with_no_serverity_label():
    pass

@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_serverity():
    pass

@allure.severity(allure.severity_level.NORMAL)
def test_with_trivial_serverity1():
    pass

pytest测试框架——allure报告
对某一级别的用例运行时添加命令行参数–allure-severities:

pytest test_allure_severity.py --alluredir=./reports --clean-al
luredir --allure-severities=trivial

7、allure报告中添加用例支持tags标签

Allure报告支持的一些常见Pytest特性包括xfail、
skipif、fixture等。测试结果会展示特定的标识在用例详情页面。

8、allure报告中添加pytest.fixture

应用场景:fixture和finalizer是分别在测试开始之前和测试结束之后由Pytest调用的实用程序函数。Allure跟踪每个fixture的调用,并详细显示调用了哪些方法以及哪些参数,从而保持了调用的正确顺序。

import allure
import pytest

@pytest.fixture()
def func():
    print('前置操作')
    yield
    print('后置操作')

class TestDemo:

    def test_a(self,func):
        assert True

    def test_b(self):
        pass

pytest测试框架——allure报告

五、失败用例重试功能

Allure可以收集用例运行期间,重试的用例的结果,以及这段时间重试的历史记录。

安装:
pip install pytest-rerunfailures

import pytest
import allure


@pytest.mark.flaky(reruns=2,reruns_delay=2)
class TestDemo:

    def test_a(self):
        assert True

    def test_b(self):
        assert False

pytest测试框架——allure报告
pytest测试框架——allure报告

六、allure报告中添加附件

1、添加图片

应用场景:在做UI自动化测试时,可以将页面截图,或者出错的页面进行截图,将截图添加到测试报告中展示,辅助定位问题。

解决方案:使用allure.attach或者allure.attach.file()添加图片。

语法:allure.attach.file( source,name, attachment_type,extension)
参数解释:
source:文件路径,相当于传一个文件。
name:附件名字。
attachment_type:附件类型,是
allure.attachment_type其中的一种(支持PNG、JPG、BMP、GIF等)。
extension:附件的扩展名。

案例1

import pytest
import allure


class TestWithAttach:

    def test_pic(self):


        allure.attach.file(source="./1.jpeg",
                           name='图片',
                           attachment_type=allure.attachment_type.PNG,
                           extension="jpeg")

pytest测试框架——allure报告

案例2

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/2/20 18:46
# @Author  : 杜兰特
# @File    : test_allure_pic.py

import pytest
import allure


class TestWithAttach:

    def test_pic(self):


        allure.attach.file(source="./1.jpeg",
                           name='图片',
                           attachment_type=allure.attachment_type.PNG,
                           extension="jpeg")


    def test_pic1(self):
        with open('./1.jpeg',mode='rb') as f:
            file=f.read()
            print(file)
            allure.attach(file,name='页面截图',attachment_type=allure.attachment_type.PNG)

pytest测试框架——allure报告

2、添加日志

应用场景:报告中添加详细的日志信息,有助于分析定位问题。
解决方案:使用python自带的logging模块生成日志,日志会自动添加到测试报告中。

import allure

from utils.log_util import logger


@allure.epic("需求1")
@allure.feature("功能模块一")
class TestEpic:
    @allure.story("子功能一")
    @allure.title("用例1")
    def test_case1(self):
        logger.info("这是 TestEpic 第一条用例")
        print("用例1")

    @allure.story("子功能二")
    @allure.title("用例2")
    def test_case2(self):
        logger.debug("这是 TestEpic 第二条用例")
        print("用例2")

    @allure.story("子功能二")
    @allure.title("用例3")
    def test_case3(self):
        logger.warning("这是 TestEpic 第三条用例")
        print("用例3")

    @allure.story("子功能一")
    @allure.title("用例4")
    def test_case4(self):
        logger.error("这是 TestEpic 第四条用例")
        print("用例4")

    @allure.story("子功能三")
    @allure.title("用例5")
    def test_case5(self):
        print("用例5")

@allure.epic("需求1")
@allure.feature("功能模块二")
class TestEpic1:
    @allure.story("子功能四")
    def test_case1(self):
        print("用例1")

    @allure.story("子功能五")
    def test_case2(self):
        print("用例2")

    def test_case3(self):
        print("用例3")


@allure.epic("需求2")
class TestEpic2:
    def test_case1(self):
        print("用例1")

    def test_case2(self):
        print("用例2")

    def test_case3(self):
        print("用例3")

pytest测试框架——allure报告

3、添加html

应用场景:可以定制测试报告页面效果,可以将HTML类型的附件显示在报告页面上。
解决方案:使用allure.attach()添加html代码。

语法:
allure.attach (body ,name,attachment_type,extension),参数解释:
body:要写入附件的内容(HTML代码块)。
name:附件名字。
attachment_type:附件类型,是allure.attachment_type其中的一种。
extension:附件的扩展名。

import allure
from utils.log_util import logger

class TestAllureHTML:

    def test_html(self):
        logger.info('测试日志')
        allure.attach(body="""
        <img class="index-logo-src" src="//www.baidu.com/img/flexible/logo/pc/result.png" alt="到百度首页" title="到百度首页">
        """,
                      name='添加html',
                      attachment_type=allure.attachment_type.HTML,
                      extension='html')

pytest测试框架——allure报告

4、添加视频

应用场景:在做UI自动化测试时,可以将页面截图,或者出错的页面进行截图,将截图添加到测试报告中展示,辅助定位问题。
解决方案:使用allure.attach. file()添加视频。

语法:
allure.attach (body ,name,attachment_type,extension),参数解释:
body:要写入附件的内容(HTML代码块)。
name:附件名字。
attachment_type:附件类型,是allure.attachment_type其中的一种。
extension:附件的扩展名。

import allure

class TestWithAttach:

    def test_video(self):
        allure.attach.file("xxx.mp4",
                           name='视频资源',
                           attachment_type=allure.attachment_type.MP4,
                           extension='mp4')

七、定制allure报告

应用场景:针对不同的项目可能需要对测试报告展示的效果进行定制,比如修改页面的logo、修改项目的标题或者添加一些定制的功能等等。

1、修改页面的logo

1.修改allure.yml文件,添加logo插件custom-logo-plugin(在allure安装路径下,可以通过where allure或者which allure查看allure安装路径))。
2.编辑styles.css文件,配置logo图片。文章来源地址https://www.toymoban.com/news/detail-413331.html

到了这里,关于pytest测试框架——allure报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Pytest】Allure测试报告的安装与环境配置

    Allure基于Java开发,因此需要提前安装Java 8 或以上版本的环境。 jdk下载地址:http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html 选择jdk8,下载完成: 双击进行安装,安装过程中注意记住选择的路径(有一个jdk包和一个jre包的保存路径选择,我更改了路径分别到D:javaJDK和D:javaJRE)。

    2024年02月16日
    浏览(41)
  • 使用Pytest集成Allure生成漂亮的图形测试报告

    目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告  资料获取方法 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jenkins的集成插件。 这一次

    2024年02月13日
    浏览(29)
  • 软件测试/测试开发丨Pytest和Allure报告 学习笔记

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26755 类型 规则 文件 test_开头 或者 _test 结尾 类 Test 开头 方法/函数 test_开头 注意:测试类中不可以添加 __init__ 构造函数 注意:pytest对于测试包的命名没有要求 方法:类中定义的函数 函数:类

    2024年02月10日
    浏览(55)
  • Pytest模式执行python脚本不生成allure测试报告

     1.安装allure 下载allure的zip安装包 将allure.zip解压到python的lib目录中 将allure的bin路径添加到环境变量path中(注意:配置环境变量后,一定要重启电脑。因为环境变量没生效,我搞了半天在pycharm不能生成报告,在cmd中可以生成报告) 安装allure-pytest,命令为:  pip install allure-pytes

    2024年02月11日
    浏览(40)
  • Pytest单元测试框架 —— Pytest+Allure+Jenkins的应用

    一、简介 pytest+allure+jenkins进行接口测试、生成测试报告、结合jenkins进行集成。 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高 allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起

    2024年02月07日
    浏览(53)
  • python代码实现判断三角形类型,使用pytest进行代码测试,生成allure测试报告

    一、python代码判断三角形类型 写代码之前首先我们要知道满足三角形的条件: 前提条件:三角形边长都为大于0的数字 构成三角形:两边之和大于第三边 即 a+b c  and a+cb and  b+ca   (此三个条件需要同时满足) 满足构成三角形之后,要考虑构成三角形的类型: 三角形分为:

    2024年02月05日
    浏览(47)
  • 【Pytest实战】Pytest+Allure+Jenkins自动化测试框架搭建

    😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想当开发的测试,不是一个好测试✌️。 如果感觉博主的文章还不错的话,还请点赞、收藏哦

    2024年02月15日
    浏览(60)
  • 接口自动化测试实战之pytest框架+allure讲解

    本文章主要会讲解Python中pytest框架的讲解,介绍什么是pytest、为何要测试、为何使用以及参考和扩展等等,话不多说,咱们直接进入主题哟。 pytest是一款单元测试框架,在编程过程中,单元主要指的是代码中最小的组成部分,例如函数或类,在面向对象中,最小的单元就是类

    2024年02月05日
    浏览(77)
  • 基于Pytest+Allure+Excel的接口自动化测试框架

    Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发的,支持 Pytest,JaveScript、PHP、Ruby 等。 从 DEV/QA 的角

    2024年02月09日
    浏览(71)
  • 接口测试框架pytest+allure+jenkins之jenkins环境安装配置步骤

    pytest+Allure+jenkins,可以定时跑测试用例,生成测试报告并发送邮箱,关联git,自动更新git最新代码,解放双手。但是对于第一次接触jenkins的测试人员,装jenkins环境和配置job等步骤较繁琐,很容易出错。本文将记录主要的Jenkins安装和配置步骤,以及容易踩坑的地方。 1. 检查是

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包