前言

一般流程性的测试用例,写成自动化用例时,步骤较多写起来会比较长。在测试用例里面添加详细的步骤有助于更好的阅读,也方便报错后快速的定位到问题。

举个常见的测试场景用例:从登陆开始,到浏览商品添加购物车,最后下单支付

用例步骤:1.登陆, 2.浏览商品 3.添加购物车 4.生成订单 5.支付成功

用例设计

先把上面的每个环节,写成函数放到common_fucntion.py

# common_fucntion.py
import allure
import pytest
'''
流程性的用例,添加测试步骤,让用例更清晰
用例步骤:1.登陆, 2.浏览商品 3.添加购物车 4.生成订单 5.支付成功
作者:上海-悠悠 QQ交流群:779429633
''' def login(username, password):
'''登陆'''
print("前置操作:先登陆") def open_goods():
'''浏览商品'''
print("浏览商品") def add_shopping_cart(goods_id="10086"):
'''添加购物车'''
print("添加购物车") def buy_goods():
'''生成订单'''
print("buy") def pay_goods():
'''支付'''
print("pay")

接下来测试用例设计,登陆可以单独拿出来,当成前置操作,后面的步骤合起来就是一个用例test_allure_step.py

# test_allure_step.py
import allure
import pytest
from .common_function import * '''
流程性的用例,添加测试步骤,让用例更清晰
用例步骤:1.登陆, 2.浏览商品 3.添加购物车 4.生成订单 5.支付成功
作者:上海-悠悠 QQ交流群:779429633
''' @pytest.fixture(scope="session")
def login_setup():
login("yoyo", "123456") @allure.feature("功能模块")
@allure.story("测试用例小模块-成功案例")
@allure.title("测试用例名称:流程性的用例,添加测试步骤")
def test_add_goods_and_buy(login_setup):
'''
用例描述:
前置:登陆
用例步骤:1.浏览商品 2.添加购物车 3.购买 4.支付成功
'''
with allure.step("step1:浏览商品"):
open_goods() with allure.step("step2:添加购物车"):
add_shopping_cart() with allure.step("step3:生成订单"):
buy_goods() with allure.step("step4:支付"):
pay_goods() with allure.step("断言"):
assert 1 == 1

执行用例,生成allure报告

> pytest --alluredir ./allure_report test_allure_step.py
> allure serve ./allure_report

报告展示效果如下

测试步骤@allure.step()

测试步骤也可以在 common_fucntion.py 里面定义的函数上加上装饰器实现:@allure.step()

import allure
import pytest
'''
流程性的用例,添加测试步骤,让用例更清晰
用例步骤:1.登陆, 2.浏览商品 3.添加购物车 4.生成订单 5.支付成功
''' @allure.step("setup:登陆")
def login(username, password):
'''登陆'''
print("前置操作:先登陆") @allure.step("step:浏览商品")
def open_goods():
'''浏览商品'''
print("浏览商品") @allure.step("step:添加购物车")
def add_shopping_cart(goods_id="10086"):
'''添加购物车'''
print("添加购物车") @allure.step("step:生成订单")
def buy_goods():
'''生成订单'''
print("buy") @allure.step("step:支付")
def pay_goods():
'''支付'''
print("pay")

测试用例设计 test_allure_step_x.py

import allure
import pytest
from .common_function import *
# 作者:上海-悠悠 QQ交流群:779429633 @pytest.fixture(scope="session")
def login_setup():
login("yoyo", "123456") @allure.feature("功能模块")
@allure.story("测试用例小模块-成功案例")
@allure.title("第二种实现方式:流程性的用例,添加测试步骤")
def test_add_goods_and_buy_2(login_setup):
'''
用例描述:
前置:登陆
用例步骤:1.浏览商品 2.添加购物车 3.购买 4.支付成功
'''
open_goods()
add_shopping_cart(goods_id="10086")
buy_goods()
pay_goods()
assert 1 == 1

执行用例,生成allure报告

> pytest --alluredir ./allure_report test_allure_step_x.py
> allure serve ./allure_report

报告展示效果如下

两种方式对比

使用 with allure.step("step:步骤") 这种方式代码可读性更好一点,但不会带上函数里面的传参和对应的值。

使用 @allure.step("step:步骤") 这种方式会带上函数的传参和对应的值。

这两种方式结合起来使用,才能更好的展示测试报告!

pytest文档38-allure.setp添加测试用例步骤的更多相关文章

  1. pytest文档3-pytest+Allure+jenkins+邮箱发送

    前言: 虽然网上有很多邮件配置的文章,但还是想自己写一下配置的过程,因为在中间也碰到了不同坑.按照这个文档配置的话,99%都可以成功.   一.jenkins 配置邮箱 1.打开jenkins后进入点 ...

  2. pytest文档2-pytest+Allure+jenkins+邮箱发送

    前言: 上一章节讲解了tomcat+jenkins的环境搭建,这一章节主要讲一下Allure报告在jenkins上的配置 步骤: 1.新建一个item 2.输入项目的名称,选择自由风格,点击保存 3. ...

  3. pytest文档1-pytest+Allure+jenkins+邮箱发送

    前言: 1.pytest+allure是目前很多公司使用较多的一种报告样式,因为它更详细,各种指标更直观(简单的说就是看着更高大上,更能装X). 环境准备: 1.Windows10 2.Allure ...

  4. pytest文档7-pytest-html生成html报告

    前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 pytest-html 1.github上源码地址[https://github. ...

  5. pytest文档3-pycharm运行pytest

    前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...

  6. pytest文档30-功能用例与自动化用例完美对接(allure)

    前言 做自动化做久了,经常会思考一个问题,到底别人是怎么做的自动化,跟自己的有啥不一样,看过不少书和资料,都是停留在demo的层面. 真正把自动化做的好的大牛又不屑于分享自己的劳动成果,所以大部分情况 ...

  7. pytest文档47-allure报告添加用例失败截图

    前言 使用 selenium 做 web 自动化的时候,很多小伙伴希望用例失败的时候能截图,把异常截图展示到allure报告里面. pytest 有个很好的钩子函数 pytest_runtest_ma ...

  8. pytest文档55-plugins插件开发

    前言 前面一篇已经学会了使用hook函数改变pytest运行的结果,代码写在conftest.py文件,实际上就是本地的插件了. 当有一天你公司的小伙伴觉得你写的还不错,或者更多的小伙伴想要你这个功能 ...

  9. pytest文档43-元数据使用(pytest-metadata)

    前言 什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助. pytest 框架里面的元数据可以使用 pytest-metadata 插件实现.文档地址http ...

随机推荐

  1. 17-jmeter相关插件介绍

    转--https://www.cnblogs.com/imyalost/p/7751981.html

  2. 编写高质量Python程序(三)基础语法

    本系列文章为<编写高质量代码--改善Python程序的91个建议>的精华汇总. 关于导入模块 Python的3种引入外部模块的方式:import语句.from ... import ... ...

  3. webWMS开发过程记录(四)- 整体设计

    分层 View(Servlet/Action/JSP)--> Service(接口/实现类) --> Dao(接口/实现类) 所用技术 Struts2 Hibernate Spring J ...

  4. 架构师修炼之设计模式 - 策略模式(Strategy) 【Python与C#实现】

    程序员,我为你祝福 愿你有一个灿烂的前程 愿你有情人终成眷属 愿你在尘世获得幸福 我只想成为架构师,走遍江湖! 目录 模式定义 模式分类 模式结构 实例(C#与Python版) 优点 缺点 使用场景 ...

  5. D - Leading and Trailing LightOJ - 1282

    题解:求n^k的前三位和后三位. 后三位直接快速幂对1000去余就可以了.前三位可以转换成浮点数来操作,也是用快速幂,我们只保留答案的前三位,当前值大于1000.0的话就除以10,直到结果小于等于10 ...

  6. T - Nash Matrix CodeForces - 1316D

    题意: 输入n行数,没行由2*n个数,表示一个坐标(x,y). 如果x和y==-1表示从该点(i,j)出发,按照构造的前移动不会停下. 否则就要到点(x,y)处停下. 题解: 首先处理-1  枚举每个 ...

  7. lua使用笔记1:Linux 中安装lua

    1.lua安装 1)http://www.lua.org/download.html为下载页面 linux中运行 wget http://www.lua.org/ftp/lua-5.2.3.tar.g ...

  8. mybatis源码配置文件解析之三:解析typeAliases标签

    在前边的博客在分析了mybatis解析settings标签,<mybatis源码配置文件解析之二:解析settings标签>.下面来看解析typeAliases标签的过程. 一.概述 在m ...

  9. Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务

    写在前面 网关的作用不在此赘述,举个最常用的例子,我们搭建了微服务,前端调用各服务接口时,由于各服务接口不一样,如果让前端同事分别调用,前端同事会疯的.而网关就可以解决这个问题,网关屏蔽了各业务服务的 ...

  10. [wp]xctf newscenter

    手工注入 查询所有数据库名称和表名 ' union select 1,table_schema,table_name from information_schema.tables# 发现就两个数据库i ...