pytest简易教程(36):pytest + allure最佳实践

本文是pytest结合allure生成详细测试报告的教程,涵盖了如何使用allure装饰器和代码方式添加描述信息,如feature、story、severity、step、link、issue、testcase和attach。内容包括各场景应用示例,以及如何动态添加描述信息和按特征、故事、严重性执行测试用例。
摘要由CSDN通过智能技术生成

pytest简易教程汇总,详见https://www.cnblogs.com/uncleyong/p/17982846

简介

上一篇我们已经生成了allure报告,但是可读性不是很强,

所以我们还需要对报告优化,也就是通过allure提供的装饰器添或者代码方式加一些描述信息。

官方示例:https://github.com/allure-examples/allure-examples

常用装饰器

说明:

  • feature和story类似于父子关系
  • 如果不加 @allure.feature、@allure.story,在Behaviors下测试用例就不会分类显示
  • 如果没有添加 @allure.title() ,测试用例的标题默认就是函数名

添加方式及常用格式

方式一:装饰器

放在测试用例上,也就是测试方法上

@allure.epic("项目")
@allure.feature("模块")
@allure.story("子模块")
@allure.title("标题")
@allure.severity(allure.severity_level.CRITICAL)
@allure.description("描述")

优点:可以指定feature、story、severity运行,--allure-features="xxx" --alure-stories="xxx","yyy" --allure-severities blocker,critical,normal

不足:每个用例分别添加描述信息比较繁琐

补充:severity_level的值是枚举

方式二:代码(推荐)

放在测试用例下,也就是测试方法下

allure.dynamic.epic("项目")
allure.dynamic.feature("模块")
allure.dynamic.story("子模块")
allure.dynamic.title("标题")
allure.dynamic.severity("优先级")
allure.dynamic.description("描述")

优点:描述信息实现参数化

不足:不能指定feature、story、severity运行

实际工作中,如果用到参数化,描述信息可以放到参数化数据中,这样就可以用方式二读取测试数据动态生成描述信息。

报告添加severity(装饰器方式)

应用场景:想要根据优先级执行用例,可以通过allure.severity来添加标记

示例代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 韧
# @wx :ren168632201
# @Blog :https://www.cnblogs.com/uncleyong/
import allure


# 没有指定,默认是normal
@allure.feature("模块1")
@allure.story("m1子模块1")
def test_no_severity():
    pass


@allure.feature("模块2")
@allure.story("m2子模块1")
@allure.severity(allure.severity_level.TRIVIAL)
def test_trivial_severity():
    pass

@allure.feature("模块3")
@allure.story("m3子模块1")
@allure.severity(allure.severity_level.NORMAL)
def test_normal_severity():
    pass

@allure.feature("模块4")
@allure.story("m4子模块1")
@allure.severity(allure.severity_level.NORMAL)
class TestCase:
    def test_inclass_normal_severity(self):
        pass

    # 优先级就近原则
    @allure.severity(allure.severity_level.CRITICAL)
    def test_inclass_critical_severity(self):
        pass

指定单个优先级执行

指定多个优先级执行

指定单个模块执行

指定模块和优先级执行,结果是并集,不是交集

同时指定模块和子模块执行,结果是并集,不是交集

pytest case\test_q

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值