写点什么

软件测试 / 测试开发 / 全日制|Pytest allure 如何添加测试用例步骤

  • 2024-02-01
    北京
  • 本文字数:2031 字

    阅读完需:约 7 分钟

前言

在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。在 allure 提供给我们的众多装饰器中,就有一个非常符合我们的需求,它就是allure.step(),它可以帮助我们在测试用例中对测试步骤进行详细的描述,本文就来介绍一下它的详细使用。

使用示例

假如我们现在有一个购物场景,步骤依次是:1.登录;2.浏览商品;3.将商品加入到购物车中;4.下单;5.支付订单;我们的测试用例如下:


# file_name: test_allure_step.py

import pytestimport allure

@allure.stepdef login(): """ 执行登录逻辑 :return: """ print("执行登录逻辑")

@allure.stepdef scan_good(): """ 执行浏览商品逻辑 :return: """ print("执行浏览商品逻辑")

@allure.stepdef add_good_to_shopping_car(): """ 将商品添加到购物车 :return: """ print("将商品添加到购物车")

@allure.stepdef generator_order(): """ 生成订单 :return: """ print("生成订单")

@allure.stepdef 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.stepdef passing_step_02(): print("执行步骤02") pass
复制代码


测试用例内容如下:


import pytestimport allure
from allure_demo.step import passing_step_02



@allure.stepdef passing_step_01(): print("执行步骤01") pass

@allure.stepdef step_with_nested_steps(): """ 这个步骤中调用nested_step() :return: """ nested_step()
@allure.stepdef nested_step_with_arguments(arg1, arg2): pass
@allure.stepdef 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 pytestimport 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()添加测试用例步骤的方法,完善的步骤描述对于我们更好地理解测试用例,创建出清晰、详细的测试报告,帮助团队更好地理解测试执行过程,从而更容易地进行问题定位和修复。希望本文可以帮到大家!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试/测试开发/全日制|Pytest allure如何添加测试用例步骤_霍格沃兹测试开发学社_InfoQ写作社区