在 Nunit Multiple Asserts 中截图

Take screenshot in Nunit Multiple Asserts

如果 Assert.Multiple 内的断言条件失败,我想截图。

例如

[Test]
public void TestScreenshot()
{
    Assert.Multiple(() =>
    {
        Assert.IsTrue(false);
        Assert.Istrue(true);
    });
}

在上面的测试中,假设第一个断言是 failure.So 我想在第一个断言之后截取屏幕截图。但是 Assert.Multiple 将 return 断言一旦所有步骤都在多重条件下执行。

那么,在多重条件passes/fails中添加条件passes/fails后,有没有办法截屏

很遗憾,不支持您想执行的操作。但是,在失败的情况下,以下可能会起作用。

Assert.IsTrue(false, () => TakeScreenShotAndReturnMessage("Your error message"));
...
private string TakeScreenShotAndReturnMessage(string msg)
{
    // Code here to take the screen shot

    TestContext.AddTestAttachment(pathToScreenShot);

    return msg;
}

一些警告:

  1. 黑客没有比这更黑客的了!该代码滥用了旨在动态生成错误消息的功能。

  2. 这是纯粹的“论坛代码”,可能需要更改。如果你这样做,感觉 如果可以,可以自由编辑。根据您的 NUnit 版本,您可能需要使用 delegate 而不是 lambda。