前言
在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。在allure提供给我们的众多装饰器中,就有一个非常符合我们的需求,它就是allure.step()
,它可以帮助我们在测试用例中对测试步骤进行详细的描述,本文就来介绍一下它的详细使用。
使用示例
假如我们现在有一个购物场景,步骤依次是:1.登录;2.浏览商品;3.将商品加入到购物车中;4.下单;5.支付订单;我们的测试用例如下:
# file_name: test_allure_step.py
import pytest
import allure
@allure.step
def login():
"""
执行登录逻辑
:return:
"""
print("执行登录逻辑")
@allure.step
def scan_good():
"""
执行浏览商品逻辑
:return:
"""
print("执行浏览商品逻辑")
@allure.step
def add_good_to_shopping_car():
"""
将商品添加到购物车
:return:
"""
print("将商品添加到购物车")
@allure.step
def generator_order():
"""
生成订单
:return:
"""
print("生成订单")
@allure.step
def pay():
"""
支付订单
:return:
"""
print("支付订单")
def test_buy_good():
"""
测试购买商品:
步骤1:登录
步骤2:浏览商品
步骤3:将商品加入到购物车中
步骤4:下单
步骤5:支付
:return:
"""
login()
scan_good()
add_good_to_shopping_car()
generator_order()
pay()
with allure.step("断言"):
assert 1
if __name__ == '__main__':
pytest.main(['-s', 'test_allure_step.py'])
运行如下命令,执行测试,生成并打开测试报告:
pytest test_allure_step.py --clean-alluredir --alluredir=./results
allure serve results
生成的测试报告如下图:
从报告中可以看到,我们事先通过@allure.step()
定义好的步骤都展示在测试用例test_buy_good()
下了。
嵌套,step中调用step
首先,我们先创建一个step.py
,内容如下:
# file_name: steps.py
import allure
@allure.step
def passing_step_02():
print("执行步骤02")
pass
测试用例内容如下:
import pytest
import allure
from allure_demo.step import passing_step_02
@allure.step
def passing_step_01():
print("执行步骤01")
pass
@allure.step
def step_with_nested_steps():
"""
这个步骤中调用nested_step()
:return:
"""
nested_step()
@allure.step
def nested_step_with_arguments(arg1, arg2):
pass
@allure.step
def nested_step():
"""
这个步骤中调用nested_step_with_arguments(),并且传递参数
:return:
"""
nested_step_with_arguments(1, 'abc')
def test_with_imported_step():
"""
测试@allure.step()支持调用从外部模块导入的step
:return:
"""
passing_step_01()
passing_step_02()
def test_with_nested_steps():
"""
测试@allure.step()支持嵌套调用step
:return:
"""
passing_step_01()
step_with_nested_steps()
passing_step_02()
if __name__ == '__main__':
pytest.main(['-s', 'test_allure_step_nested.py'])
执行如下命令,即可运行测试及生成测试报告:
pytest test_allure_step_nested.py --clean-alluredir --alluredir=./results
allure serve results
测试报告如下图所示:
从上面的结果中可以看到:
@step
可以先保存到其他模块中,在测试用例中需要用到的时候导入就可以了;@step
也支持在一个step中嵌套调用其他的step;嵌套的形式在测试报告中以树形展示出来了。
@allure.step添加描述传递参数
示例代码如下:
# file_name: test_allure_step_with_placeholder.py
import pytest
import allure
@allure.step('这是一个带描述语的step,并且通过占位符传递参数:positional = "{0}",keyword = "{key}"')
def step_title_with_placeholder(arg1, key=None):
pass
def test_step_with_placeholder():
step_title_with_placeholder(1, key="something")
step_title_with_placeholder(2)
step_title_with_placeholder(3, key="anything")
if __name__ == '__main__':
pytest.main(['-s', 'test_allure_step_with_placeholder.py'])
运行如下命令,执行测试并生成报告:
pytest test_allure_step_with_placeholder.py --clean-alluredir --alluredir=./results
allure serve results
生成的测试报告如下图所示:
总结
本文主要介绍了使用allure.step()
添加测试用例步骤的方法,完善的步骤描述对于我们更好地理解测试用例,创建出清晰、详细的测试报告,帮助团队更好地理解测试执行过程,从而更容易地进行问题定位和修复。希望本文可以帮到大家!
推荐
Python全栈开发与自动化测试开发班
由浅入深实战进阶,从小白到高手
以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。
课程详情
Python开发必备基础技能与项目实战
Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战
人工智能ChatGPT实战
人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战
数据分析与自动化办公
数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理
UI自动化测试与高级项目实战
Web自动化测试/App自动化测试/ PageObject设计模式
接口自动化测试
接口协议分析/Mock实战/服务端接口测试
性能测试
性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建
简历指导与模拟面试
1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务
名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘
课程亮点
名企私教服务 先学习后付费 高额奖学金
专属社群+晚自习在线答疑
5V1全方位辅导作业+考试强化学习效果
简历修改 模拟面试 就业内推 面试复盘