我有一个测试自动化项目,使用:Java、Maven、TestNG、Selenium WebDriver 和 Extent Reports(最新 5.0.9)。
我的大多数测试都使用 DataProvider,并且我还实现了 RetryAnalyzer - 如果失败,测试/测试用例会重试一次。
我的Extent Reports“设计”看起来像这样:用@Test注释的方法由
ExtentTest extentTest = extentReports.createTest([...]
表示。该方法的数据提供者的每个案例都由一个节点表示:extentNode = extentTest.createNode([...]
。
该结构的结果是这样的:
样本测试有一个数据提供者,有3个案例。每个案例都由右侧列出的一个节点表示。可以展开节点来查看步骤、日志等..
我遇到的问题是这样的场景:其中一个数据提供程序案例失败并重试。该案例的重试运行通过了。
案例首次运行失败后,
extentTest
状态会自动设置为Fail,因为我在测试方法中对异常执行extentNode.fail([...]
。在 @AfterMethod 方法中,我从报告中删除了最初失败的节点: extentReports.removeTest(extentNode)
但这不会改变 extentTest
的状态 - 它的状态仍然返回 Fail。
示例测试被列为失败,但每个节点都通过了。
我尝试了
extentTest.pass("description")
- 它只是向测试添加了通过的步骤,但不会更改整体测试状态。
我还尝试在重新运行失败的场景后解决报告中重复条目的相同问题。如果您找到了解决方案,请告诉我们吗?
谢谢你。