使用Selenium、JBehave与Serenity,如何让报告仅展示故事成败状态?
当然可行啦!Serenity完全支持调整报告的展示粒度,让你把焦点放在故事级别,不用再纠结单个场景的状态——只要故事里有任意一个场景失败,整个故事就会被标记为失败,报告首页只会显示故事的整体结果。下面是具体的实现步骤:
1. 修改Serenity配置文件
在项目的serenity.properties或者serenity.conf配置文件中添加以下参数:
# 隐藏单个场景的详情展示 serenity.reporting.show.scenarios=false # 基于故事整体计算结果(有一个场景失败则故事失败) serenity.reporting.story-level.results=true
这两个配置组合起来,就能让报告默认只展示故事层级的状态,并且按照故事整体来判定通过/失败。
2. 确保JBehave故事结构规范
要让Serenity正确识别故事和场景的归属,你的JBehave故事文件需要遵循标准结构,比如:
Story: 用户账户登录功能
Narrative:
In order to access my personal account
As a registered user
I want to log in using valid credentialsScenario: 输入正确信息登录成功
Given 我处于系统登录页面
When 我输入有效的用户名和密码并点击登录
Then 我应该进入用户个人主页Scenario: 输入错误密码登录失败
Given 我处于系统登录页面
When 我输入正确用户名和错误密码并点击登录
Then 我应该看到登录失败的提示信息
规范的结构能让Serenity准确关联场景和所属故事,从而正确计算故事的整体状态。
3. 验证报告效果
运行测试套件后,打开Serenity生成的HTML报告(默认路径是target/site/serenity/index.html),你会发现报告首页只列出了各个故事条目,每个故事的状态要么是通过要么是失败。如果需要查看具体的失败细节,点击对应的故事条目就能展开查看场景的详细信息(虽然默认隐藏了,但还是可以按需展开)。
如果需要更个性化的定制,还可以编写Serenity的自定义报告处理器,但上面的配置已经能满足你的核心需求,不需要额外编码。
内容的提问来源于stack exchange,提问作者Florin Cernat

