运行 测试失败时的额外清理功能(断言失败时)
Run adiitional cleanup function on test failure (when Assertion Fails)
我目前有一个使用 Nunit 和 C# 以及使用断言的 Selenium WebDriver 的测试套件,有没有办法只有在断言失败时才具有函数 运行。通常这将继续进行拆解,然后进行下一个测试,但是如果上一个测试失败,我需要在测试中重置某些参数。执行此操作的最佳方法是什么?
您可以扩展 TestActionAttribute 来处理这个问题。在 AfterTest()
覆盖中,您可以检查 TestContext.CurrentContext.Result.Status == TestStatus.Failed
并进行适当处理。例如,
public class ClassTest
{
[Test]
[OnFailure] // << your custom attribute here
public void MyTest()
{
Assert.Fail("test failed");
}
}
[AttributeUsage(AttributeTargets.Method)]
public class OnFailureAttribute : TestActionAttribute
{
public override void AfterTest(TestDetails testDetails)
{
if(TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
// TODO: your error handling
Console.WriteLine(testDetails.FullName + " failed");
}
}
}
我目前有一个使用 Nunit 和 C# 以及使用断言的 Selenium WebDriver 的测试套件,有没有办法只有在断言失败时才具有函数 运行。通常这将继续进行拆解,然后进行下一个测试,但是如果上一个测试失败,我需要在测试中重置某些参数。执行此操作的最佳方法是什么?
您可以扩展 TestActionAttribute 来处理这个问题。在 AfterTest()
覆盖中,您可以检查 TestContext.CurrentContext.Result.Status == TestStatus.Failed
并进行适当处理。例如,
public class ClassTest
{
[Test]
[OnFailure] // << your custom attribute here
public void MyTest()
{
Assert.Fail("test failed");
}
}
[AttributeUsage(AttributeTargets.Method)]
public class OnFailureAttribute : TestActionAttribute
{
public override void AfterTest(TestDetails testDetails)
{
if(TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
// TODO: your error handling
Console.WriteLine(testDetails.FullName + " failed");
}
}
}