Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告&Gherkin格式命令行报告

Pytest-Bdd-Playwright 系列教程(16):标准化JSON报告&Gherkin格式命令行报告

前言

  • 在自动化测试中,生成详细、易于理解的报告是非常重要的,尤其是当我们使用行为驱动开发(BDD)方法时;
  • pytest-bdd与Cucumber标准兼容,可以生成多种格式的测试报告,帮助团队更高效地沟通和协作;
  • 本文将介绍如何使用pytest-bdd生成标准化的JSON报告,并展示如何在命令行终端使用Gherkin格式进行报告输出。

一、创建Feature文件

在项目中,创建一个features/login_demo.feature文件,内容如下:

gherkin 复制代码
Feature: 用户登录功能

  Scenario: 用户使用正确的凭证登录
    Given 用户已打开登录页面
    When 用户输入有效的用户名和密码
    Then 用户应该成功登录并看到主页

二、创建步骤定义文件

为每个步骤编写步骤定义,创建一个tests/test_login_demo.py文件,内容如下:

python 复制代码
from pytest_bdd import given, when, then, scenario

@given('用户已打开登录页面')
def open_login_page():
    print("打开登录页面")

@when('用户输入有效的用户名和密码')
def input_credentials():
    print("输入有效的用户名和密码")

@then('用户应该成功登录并看到主页')
def verify_login():
    print("验证用户成功登录并看到主页")


@scenario('login_demo.feature', '用户使用正确的凭证登录')
def test_login():
    pass

三、生成Cucumber格式的JSON报告

为了便于后续的报告分析和展示,Pytest-BDD支持将测试结果以Cucumber JSON格式输出。通过以下命令,可以将报告输出到指定路径:

bash 复制代码
pytest ./tests/test_login_demo.py --cucumberjson=report.json

该命令会将所有场景展平(即将场景大纲展开为多个具体场景)并生成一个标准的Cucumber格式的JSON报告。

解析JSON报告

生成的JSON报告文件包含了每个场景的执行结果,可以进一步用于集成到CI/CD工具中,如Jenkins。报告内容通常包括每个测试步骤的状态、执行时间等信息。

下面是生成的JSON报告内容:

四、使用Gherkin格式的命令行报告

除了生成JSON格式的报告,Pytest-BDD还支持在命令行中使用Gherkin格式输出结果。为了让报告更加简洁且易于理解,可以使用--gherkin-terminal-reporter选项。

配置

要启用 --gherkin-terminal-reporter,可以将其添加到你的 pytest 配置文件(pytest.ini)中的 [pytest] 部分:

text 复制代码
[pytest]
addopts = 
	 -vs 
	 --gherkin-terminal-reporter

或者,我们可以在命令行中运行 pytest 时使用该选项,使用-vs选项可以进一步增加输出的详细信息:

bash 复制代码
pytest ./tests/test_login_demo.py -vs --gherkin-terminal-reporter

此命令将以Gherkin格式在终端中显示每个场景的执行结果。

注:pytest-sugar 的输出会干扰 --gherkin-terminal-reporter 的格式化效果,单独使用 --gherkin-terminal-reporter以避免干扰。

五、将BDD报告集成到Jenkins中

Jenkins作为常见的持续集成工具,支持通过插件将BDD报告集成到构建过程。

我们可以使用JUnit插件来显示测试结果;

或者使用Cucumber Reports插件来处理Cucumber格式的JSON报告。

总结

通过使用pytest-bdd,我们可以生成清晰、标准化的测试报告。无论是Cucumber格式的JSON报告,还是命令行中的Gherkin格式输出,pytest-bdd都能满足不同场景下的需求。将这些报告与持续集成工具(如Jenkins)结合使用,可以进一步提高团队的协作效率和测试反馈的及时性。

相关推荐
阿巴~阿巴~15 小时前
自定义协议设计与实践:从协议必要性到JSON流式处理
服务器·网络·网络协议·json·操作系统·自定义协议
黑客-秋凌1 天前
软件测试面试会问的测试用例设计方法
自动化测试·软件测试·自动化·测试用例
最笨的羊羊1 天前
Flink CDC系列之:JSON 序列化器JsonRowDataSerializationSchemaUtils
json·flink cdc系列·serialization·json 序列化器·rowdata·schemautils
Hacker_Oldv1 天前
Python技能进阶:探索Selenium库,实现网页自动化测试与爬虫
自动化测试·软件测试·爬虫·python·selenium·职场和发展
西游音月1 天前
(5)pytest+Selenium自动化测试-元素定位之XPath定位
selenium·测试工具·pytest
q***49861 天前
SpringCloud系列教程:微服务的未来 (五)枚举处理器、JSON处理器、分页插件实现
spring cloud·微服务·json
Hacker_Oldv2 天前
API 自动化测试难点总结与分享
自动化测试·软件测试·职场和发展
愤怒的山羊2 天前
jetcache List 缓存, json 序列化 泛型解析成了 JsonObject 处理
缓存·json·list
Hacker_Fuchen2 天前
POST请求提交数据的三种方式及通过Postman实现
自动化测试·软件测试·测试工具·postman
2***d8853 天前
使用 MySQL 从 JSON 字符串提取数据
mysql·oracle·json