【自动化基础】allure描述用例详细讲解及实战
前言
allure可以输出非常精美的测试报告,也可以和pytest进行完美结合,不仅可以渲染页面,还可以控制用例的执行。下面就对allure的使用进行一个详细的介绍和总结。
需要准备的环境:
- python
- pytest
- allure-pytest
- allure工具
一、allure用例描述
| 使用方法 | 参数值 | 参数说明 |
|---|---|---|
| @allure.epic() | epic描述 | 敏捷里面的概念,对用例或用例集进行描述分类 |
| @allure.feature() | 模块名称 | 与epic类似,只是比epic级别低 |
| @allure.story() | 用户故事 | 与epic类似,只是比feature级别低 |
| @allure.title(用例的标题) | 用例的标题 | 重命名html报告的用例名称 |
| @allure.testcase() | 测试用例的链接地址 | 与link类似 |
| @allure.issue() | 缺陷 | 与link类似 |
| @allure.description() | 用例描述 | 进行测试用例的描述 |
| @allure.step() | 操作步骤 | 进行测试用例的步骤 |
| @allure.severity() | 用例等级 | blocker,critical,normal,minor,trivial |
| @allure.link() | 链接 | 定义一个链接,在测试报告展现(推荐使用) |
| @allure.attachment() | 附件 | 报告添加附件 |
二、allure实战demo
# -*- coding:utf-8 -*-
"""
@File: allure_demo.py
@Author: 三叔测试笔记
@Time : 2022/3/18 8:34
@Description: allure使用介绍
"""
import pytest
import allure
from base.log import Logger
logger = Logger(logger_name='allure', level='error').get_logger()
@pytest.fixture(scope="session") # 用例前置操作
def login_fixture():
# 比如登录获取token操作
return "token:xx"
@allure.step("用例步骤1")
def step_1():
logger.info("用例操作---------------步骤1")
return True
@allure.step("用例步骤2")
def step_2():
logger.info("用例操作---------------步骤2")
return False
@allure.step("用例步骤3")
def step_3():
logger.info("用例操作---------------步骤3")
return True
@allure.epic("可以对用例或用例集进行描述分类(若出现多个时,内容一致则自动归为一类)")
@allure.feature("对用例集或用例进行描述分类---与epic类似,只是比epic级别低")
@allure.story("对用例集或用例进行描述分类---与epic类似,只是比feature级别低")
class TestAllureDemo:
@allure.testcase("https://xxx/testcase/list",
name='用例链接testcase') # 为了更好的链接到问题分类或者bug、测试用例地址中(url、name两个参数,可不填写name;可以用@allure.link)
@allure.link("https://xxx/testcase/list", name='用例链接link') # 与testcase没有多大区别,从可读性角度还是建议选择@allure.link
@allure.issue("https://xxx/testcase/list", name='用例链接issue') # 与testcase区别在于有小虫子图标
@allure.title("用例的标题") # 可参数化标题
@allure.story("用例分类:1") # 可参数化标题
@allure.severity("critical") # 用例等级(blocker critical normal minor trivial)
def test_case_1(self, login_fixture):
"""
1.用例描述
2.用例步骤
3.预期结果
"""
logger.info(login_fixture) # 获取用例前置的信息,比如登录token
assert step_1()
assert step_2()
@allure.story("用例分类:2")
def test_case_2(self, login_fixture):
logger.info("测试用例2")
assert step_1()
assert step_3()
@allure.epic("冒烟自动化用例")
class TestDemo2:
@allure.story("用例分类:3")
def test_case_3(self, login_fixture):
logger.info("测试用例3")
step_1()
@allure.story("用例分类:4")
def test_case_4(self, login_fixture):
logger.info("测试用例4")
step_3()
三、allure的命令行参数
pytest执行用例时可以加上allure的标记参数,可以控制执行哪些用例。
--allure-severities=SEVERITIES_SET
Comma-separated list of severity names. Tests only
with these severities will be run. Possible values
are: blocker, critical, normal, minor, trivial.
--allure-epics=EPICS_SET
Comma-separated list of epic names. Run tests that
have at least one of the specified feature labels.
--allure-features=FEATURES_SET
Comma-separated list of feature names. Run tests that
have at least one of the specified feature labels.
--allure-stories=STORIES_SET
Comma-separated list of story names. Run tests that
have at least one of the specified story labels.
--allure-link-pattern=LINK_TYPE:LINK_PATTERN
Url pattern for link type. Allows short links in test,
like 'issue-1'. Text will be formatted to full url
with python str.format().
# 选择运行你要执行epic的用例
pytest --alluredir ./report/allure --allure-epics=epic对大Story的一个描述性标签
# 选择运行你要执行features的用例
pytest --alluredir ./report/allure --allure-features=模块2
# 选择运行你要执行features的用例
pytest --alluredir ./report/allure --allure-stories="用户故事:1"
四、执行脚本输入报告
运行方式一:
命令行模式下运行pytest,生产测试结果文件
pytest demo.py --alluredir ./report/allureallure程序启动已经生产的文件
allure serve ./report/allure
运行方式二:
- 编写启动方法,运行pytest
pytest.main([allure_demo.py, "--alluredir", "report/result"])
- 使用进程,开启allure服务
import subprocess
# 五、allure生成报表,并启动程序
subprocess.call('allure generate report/result/ -o report/html --clean', shell=True)
subprocess.call('allure open -h 127.0.0.1 -p 9999 ./report/html', shell=True)
(两种方法都需要安装allure工具)
报告效果图及注解

【自动化基础】allure描述用例详细讲解及实战的更多相关文章
- pytest文档32-allure描述用例详细讲解
前言 pytest+allure是最完美的结合了,关于allure的使用,本篇做一个总结. allure报告可以很多详细的信息描述测试用例,包括epic.feature.story.title.iss ...
- tensorflow(深度学习框架)详细讲解及实战
还未完全写完,本人会一直持续更新!~ 各大深度学习框架总结和比较 各个开源框架在GitHub上的数据统计,如下表: 主流深度学习框架在各个维度的评分,如下表: Caffe可能是第一个主流的工业级深度学 ...
- Vue项目开发,nprogress进度条加载之超详细讲解及实战案例
Nprogress的默认进度条很细,它的设计灵感主要来源于 谷歌,YouTube 他的安装方式也很简单,你可以有两种使用方式: 直接引入js和css文件 使用npm安装的的方式 直接引入: Npm安装 ...
- Nginx基础详细讲解
Nginx基础详细讲解 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...
- 第二十三节:Java语言基础-详细讲解函数与数组
函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...
- 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句
位运算符(二进制位运算) 运算符 运算 例子 << 左移 3 << 2 = 12 --> 3 * 2 * 2 =12 >> 右移 3 >> 1 = ...
- vue-cli 目录结构详细讲解
https://juejin.im/post/5c3599386fb9a049db7351a8 vue-cli 目录结构详细讲解 目录 结构预览 ├─build // 保存一些webpack的初始化配 ...
- C++语言堆栈的详细讲解
本文主要向大家介绍了C++语言堆栈的详细讲解,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助. 一.预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区 ...
- 30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
前言 本文以前端面试官的角度出发,对 Vue 框架中一些重要的特性.框架的原理以问题的形式进行整理汇总,意在帮助作者及读者自测下 Vue 掌握的程度.本文章节结构以从易到难进行组织,建议读者按章节顺序 ...
随机推荐
- 什么是UIImageView
UIKit框架提供了非常多的UI控件,但并不是每一个都很常用,有些控件可能1年内都用不上,有些控件天天用,比如UIButton.UILabel.UIImageView.UITableView等等 UI ...
- 位运算符、|和||、&和&&的区别
一.位运算符操作的都是整数类型 1.<<:左移,在一定范围内向左移动n位,相当于乘以2的n次幂 左移不管是正数还是负数,都是在后面添0: 2.>>:右移,在一定范围内向右移动n ...
- 简单模拟Java中反射的应用场景
有人说Java是一门静态语言.那么何为静态语言,动态语言又是什么? 1.动态语言 是一类在运行时可以改变其结构的语言:例如新的函数.对象.甚至代码可以 被引进,已有的函数可以被删除或是其他结构上的变化 ...
- python基础语法_闭包详解
https://www.cnblogs.com/Lin-Yi/p/7305364.html 闭包有啥用??!! 很多伙伴很糊涂,闭包有啥用啊??还这么难懂! 3.1装饰器!!!装饰器是做什么的??其 ...
- Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看
一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...
- Solution -「AGC 003D」「AT 2004」Anticube
\(\mathcal{Description}\) Link. 给定 \(n\) 个数 \(a_i\),要求从中选出最多的数,满足任意两个数之积都不是完全立方数. \(n\le10^5\) ...
- mysql 查询附近N公里内数据
mysql 查询一个地点(经纬度) 附近N公里内的数据.(根据一个地点的经纬度查询这个地点方圆几公里内的数据)1.创建测试表 CREATE TABLE `location` ( `id` int(10 ...
- 五、MyBatis缓存初体验
缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存, 我们可以避免频繁的与数据库进行交互, 进而提高响应速度. 一级缓存初体验(session,默认打开) 同一查询执行两次以上:selec ...
- Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上)
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上) Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 1) 开发 ...
- 『无为则无心』Python面向对象 — 47、Python中的self详解
目录 1.self的作用 2.self的使用注意事项 (1)self代表类的实例,而非类 (2)self不必非写成self,只是一种规范. (3)类中方法的形参中一定要写self,包括内置函数 (4) ...