pytest测试框架结合allure生成精美测试报告

1、allure的简介

allure是轻量级、灵活的,支持多语言的测试报告工具。它不仅以简洁的 Web 报告形式非常简洁地展示了已测试的内容,而且允许参与开发过程的每个人从日常执行中提取最大的有用信息测试。

从开发/质量保证的角度来看,诱惑报告缩短了常见缺陷的生命周期:测试失败可以分为缺陷和中断的测试,还可以配置日志、步骤、fixture、附件、时间、历史记录以及与TMS和缺陷跟踪系统的集成,因此负责的开发人员和测试人员将掌握所有信息。

Allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成到jenkins中去。

2、allure测试报告的结果

2.1 概览页面

每个报告的入口点都是带有仪表板和小部件的“概览”页面

概述页面包含几个默认小部件,代表项目和测试环境的基本特征。

  • 统计 - 整体报告统计。
  • 启动 - 如果此报告代表多个测试启动,则每次启动的统计信息将显示在此处。
  • 行为 - 根据故事和特征汇总的结果信息。
  • 执行者 - 有关用于运行测试的测试执行者的信息。
  • 历史趋势 - 如果测试积累了一些历史数据,它的趋势将被计算并显​​示在图表上。
  • 环境 - 有关测试环境的信息(请参阅如何定义环境)。

2.2 类别

在这里插入图片描述

2.3 套件

在“套件”选项卡上,可以找到按套件和类分组的已执行测试的标准结构表示。
在这里插入图片描述

2.4 图表

查看从测试数据中收集的不同统计信息:状态细分或严重性和持续时间图。
在这里插入图片描述

2.5 时间线

Timeline 选项卡可视化测试执行的回顾,allure 适配器收集测试的精确时间,在此选项卡上,它们根据其顺序或并行时间结构进行排列。

2.6 行为

对于行为驱动方法,此选项卡根据 Epic、Feature 和 Story 标签对测试结果进行分组。

2.7 包

Packages 选项卡表示测试结果的树状布局,按不同的包分组。
在这里插入图片描述
介绍了allure报告的组成部分之后,我们来学习一下怎么安装allure和使用allure,并生成精美的测试报告。

3、allure安装需要的环境

  • (1)java jdk环境
    • allure执行依赖java环境,在这里就不演示怎么安装j打开啦
  • (2)allure-commanline
    • 展示测试报告
  • (3)allure-pytest第三方库

4、allure-commandline安装

(1)下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.13.5/(这里以2.13.5为例)
(2)下载allure.zip
(3)解压、进入bin目录把bin目录加入Path环境变量

配置环境变量如下图所示:
在这里插入图片描述

5、allure-pytest安装

(1)使用命令行安装(推荐)

pip install allure-pytest

(2)使用界面安装
在settings安装,如下图所示:
在这里插入图片描述

6、allure的用法

使用方法参数值参数说明
@allure.epic()epic描述定义项目、当有多个项目使用,往下是Feature
@allure.feature()模块名称用例按照模块区分、有多个模块时给每个起名字
@allure.story()用例名称用例的描述
@allure.title()用例标题用例标题
@allure.testcase()用例相关链接自动化用例对应的功能存放系统的地址
@allure.issue()缺陷地址对应缺陷管理系统里边的缺陷地址
@allure.description()用例描述对测试用例的详细描述
@allure.step()操作步骤测试用例的操作步骤
@allure.severity()用例等级blocker、critical、normal、minor、trivial
@allure.link()定义链接用于定义一个需要在测试报告中展示的连接
@allure.attach()添加附件添加测试报告附件,如数据、文本、图片、视频、网页

7、生成测试报告的命令

(1)在测试执行期间收集结果:

#—alluredir这个选项用于指定存储测试结果的路径
pytest [测试文件] -s -q --alluredir=./result/  

(2) 查看测试报告

方式一:测试完成后查看实际报告、在线看报告,会直接打开默认浏览器展示当前报告

#注意这里的serve书写
allure serve ./result/   

方式二:从结果生成报告、这是一个启动tomcat的服务.需要两个步骤:生成报告,打开报告

  • 生成报告:
#注意:覆盖路径加--clean
allure generate ./result/ -o ./report/ --clean
  • 打开报告:
#./report是报告所在的路径
allure open -h 127.0.0.1 -p 8883 ./report/

例子:

#方式一:test_allure1.py是模块名,./result是报告地址
pytest test_allure_demo.py -vs -q --alluredir=./result
allure serve ./result/

# 方式二
pytest test_allure_demo.py -vs -q --alluredir=./result
allure generate ./result/ -o ./report/ --clean
allure open -h 127.0.0.1 -p 8883 ./report/

8、allure 常用特性实战

(1) @allure.feature() 、@allure.title()

使用方法参数值参数说明
@allure.feature()模块名称用例按照模块区分、有多个模块时给每个起名字
@allure.title()用例标题用例标题
import allure

@allure.feature("搜素模块")
class TestSearch():
    def test_case1(self):
        print("case1")
    def test_case2(self):
        print("case2")

执行生成报告命令:

pytest test_allure_demo.py -vs -q --alluredir=./result

在这里插入图片描述
执行测试报告服务的命令:

allure serve ./result/


在这里插入图片描述

在这里插入图片描述

(2)@allure.story()、@allure.step()

使用方法参数值参数说明
@allure.story()用例名称用例的描述
@allure.step()操作步骤测试用例的操作步骤
import allure

@allure.feature("登录模块")
class TestLogin():

    @allure.story("登陆成功")
    def test_login_success(self):
        print("这是登录测试用例:登录成功")

    @allure.story("登录失败")
    def test_login_failure_a(self):
        print("这是登录测试用例:登录失败")

    @allure.story("用户名缺失")
    def test_login_failure_b(self):
        print("用户名缺失")

    @allure.story("密码缺失")
    def test_login_failure_c(self):
        with allure.step("点击用户名"):
            print("输入用户名")
        with allure.step("点击密码"):
            print("输入密码")
        print("点击登录")
        with allure.step("点击登录之后登录失败"):
            assert '1' == 1
            print("登录失败")

    @allure.story("登录失败")
    def test_login_failure_d(self):
        print("这是登录:测试用例,登录失败")

执行命令:

pytest test_allure_demo.py -vs -q --alluredir=./result
allure generate ./result/ -o ./report/ --clean
allure open -h 127.0.0.1 -p 8883 ./report/

在这里插入图片描述
或者只执行其中的部分用例:

执行用例:只执行feature为登录模块的用例
pytest test_allure_demo.py --allure-features="登录模块" -vs

执行用例:只执行stroy为登录失败的用例
pytest test_allure_demo.py --allure-stories="登录失败"

执行用例:执行登录模块下的登录成功用例
pytest test_allure_demo.py --allure-features "登录模块" --allure-stories "登录成功" -vs

(3)@allure.link()、 @allure.attach() 、@allure.issue()

使用方法参数值参数说明
@allure.link()定义链接用于定义一个需要在测试报告中展示的连接
@allure.issue()缺陷地址对应缺陷管理系统里边的缺陷地址
@allure.attach()添加附件添加测试报告附件,如数据、文本、图片、视频、网页
import allure

TEST_CASE_LINK = 'https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637'


@allure.link('https://ceshiren.com')
def test_with_link():
    pass


@allure.link('https://www.baidu.com', name='百度地址')
def test_with_named_link():
    print("这是link")


@allure.issue('140', 'bug地址')
def test_with_issue_link():
    print("这是issue")


@allure.testcase(TEST_CASE_LINK, '测试用例管理平台地址')
def test_with_testcase_link():
    print("这是testcase")

在这里插入图片描述

(4)@allure.severity()

使用方法参数值参数说明
@allure.severity()用例等级blocker、critical、normal、minor、trivial

使用场景:通常测试有PO、冒烟测试、验证上线测试。按重要性级别来分别执行的,比如上线要把主流程和重要模块都跑一遍

运行级别为:normal,critical的测试用例

pytest -s -v 文件名--allure-severities normal,critical --alluredir=./result

五种优先级:

级别描述
BLOCKER阻塞缺陷(功能未实现,无法下一步)
CRITICAL严重缺陷(功能点缺失)
NORMAL一般缺陷(边界情况,格式错误)
MINOR次要缺陷(界面错误与ui需求不符)
TRIVIAL轻微缺陷(必须项无提示,或者提示不规范)
import allure

@allure.severity(allure.severity_level.BLOCKER)
def test_blocker():
    print("这是BLOCKER")

@allure.severity(allure.severity_level.TRIVIAL)
def test_tricial():
    print("TRIVIAL")

@allure.severity(allure.severity_level.NORMAL)
def test_normal():
    print("NORMAL")

@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):

    @allure.severity(allure.severity_level.MINOR)
    def test_minor(self):
        print("这是MINOR")
    
    @allure.severity(allure.severity_level.CRITICAL)
    def test_critical(self):
        print("这是CRITICAL")

在这里插入图片描述
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子软件测试菇凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值