前言

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

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

用例步骤: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. redis中的缓存-缓存雪崩和缓存穿透

    缓存雪崩 缓存雪崩是由于原有缓存失效(过期),新缓存未到期间.所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机.从而形成一系列连锁反应,造成整个系统崩溃. 1. 碰到 ...

  2. 最长公共子窜和最长公共子序列(LCS)

    他们都是用dp做;复杂度都是O(N方) 有一个大佬的博客写的很详细,是关于最长公共子序列的:https://blog.csdn.net/hrn1216/article/details/51534607 ...

  3. js使用经验--遍历

    目的 在平常的前端开发中,一般需要处理数据(数组和对象居多),特别是复杂功能的页面,通常是一到两个对象数组(有时数组里面还有数组).大多数前端开发的难点就是这里,耗时大.以前我在工作中,遇到的支付方式 ...

  4. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十三)之Strings

    Immutable Strings Objects of the String class are immutable. If you examine the JDK documentation fo ...

  5. 3d模型一般怎么导入到到Threejs中使用

    这是我之前做的一个demo,导入的3d模型文件是obj格式的,需要使用OBJLoader和MTLLoader, mtl文件用于描述多边形可视面貌的材质如果你可以导出obj.mtl文件的话,那么就可以使 ...

  6. L20 梯度下降、随机梯度下降和小批量梯度下降

    airfoil4755 下载 链接:https://pan.baidu.com/s/1YEtNjJ0_G9eeH6A6vHXhnA 提取码:dwjq 梯度下降 (Boyd & Vandenbe ...

  7. sqli-labs通关教程----41~50关

    第四十关 与前几关一样,闭合变成') 插入数据 ?id=1') ;insert into users(id,username,password) values('17','aaa','bbb'); % ...

  8. MVC-过滤器-异常处理

    通常异常处理是用try{ }catch{ },导致代码重复冗余. 利用特性处理demo 若action中已经包含try catch 则是被异常处理过,则不会被上面异常捕获到. 不管是视图,还是调用的d ...

  9. python中文资源大全

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  10. Java IO 流-- 字节数组流ByteArrayInPutStream ByteArrayOutPutStream

    字节数组流输于缓冲流,放在jvm内存中,java可以直接操作.我们使用时可以不用关闭,交给GC垃圾回收机制处理. 当然我们为了保持良好习惯和代码一致性也可以加上关闭语句. 当其实我么打开ByteArr ...