【发布时间】:2015-12-22 00:52:11
【问题描述】:
我有一堆使用 selenium 和 NUnit 运行的自动化 UI 测试。
每次 nunit 测试后,我都想检查浏览器是否发生了任何 JS 错误。如果有任何 JS 错误,导致它们的测试应该失败。我希望它对我编写的所有测试都运行,而不必将检查复制到每个测试中。
我也会对任何失败进行截图。
[TearDown]
public void TearDown()
{
Assert.Fail("Some JS error occurred"); //This is to simulate a JS error assertion
if (TestContext.CurrentContext.Result.Status != TestStatus.Passed)
{
Driver.TakeScreenshot(TestContext.CurrentContext.Test.Name, "Failed");
}
}
如果我在 teardown 中的断言失败,它将永远不会执行屏幕截图代码(因为断言是一个异常)。
这里有没有更好的方法让测试失败,以便我可以继续我的逻辑?
【问题讨论】:
-
你为什么要调用失败断言?
-
@steve "每次测试后我都想检查浏览器是否发生了任何 JS 错误,如果有任何失败的测试" 我会稍微澄清一下代码
-
@drets 现在读起来更清楚了吗?
-
@LukeMcGregor 如果您的问题仅与屏幕截图有关,您可以不使用
Assert.Fail而是使用标志。例如。jsErrorsOccured并像下面这样使用它:if (jsErrorsOccured || (TestContext.CurrentContext.Result.Status != TestStatus.Passed)) { ... }? -
@LukeMcGregor 辛苦了:simple-talk.com/dotnet/.net-tools/…:P