运行 测试失败时的额外清理功能(断言失败时)

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");
        }
    }
}