1

我们希望将屏幕截图附加到 Azure 管道中的测试附件。目前,我们使用

  • .NET 4.5.2
  • Selenium.WebDriver 3.141
  • Selenium.Chrome.WebDriver
  • Nunit 3.12.0
  • Specflow.Nunit 2.4.0

它与以下示例类似,但我们使用 NUnit 而不是 MSTest https://docs.microsoft.com/en-us/azure/devops/pipelines/test/collect-screenshots-and-video?view=azure-devops#收集屏幕截图日志和附件

在 VS2017 中运行程序时,可以从测试报告中访问屏幕截图。此外,我们可以在 azure build 输出中看到屏幕截图。

这是代码:

string fileName = string.Format("Screenshot_" + DateTime.Now.ToString("dd-MM-yyyy-hhmm-ss") + ".jpg");

var artifactDirectory = Directory.GetCurrentDirectory();

ITakesScreenshot takesScreenshot = _driver as ITakesScreenshot;

if (takesScreenshot != null)
{
    var screenshot = takesScreenshot.GetScreenshot();

    string screenshotFilePath = Path.Combine(artifactDirectory, fileName);

    screenshot.SaveAsFile(screenshotFilePath, ScreenshotImageFormat.Jpeg);
    TestContext.AddTestAttachment(screenshotFilePath, "screenshot");
    Console.WriteLine($"Screenshot: {new Uri(screenshotFilePath)}");
}

Azure 管道中的 Visual Studio 测试步骤

Visual Studio 测试步骤

上传测试附件

构建运行后,没有附件

没有附件

任何帮助,将不胜感激。

4

1 回答 1

0

在这个问题上来得有点晚,但谁知道呢,这可能对遇到类似问题的人有所帮助。

我看不到您的整个代码,但可能发生这种情况的原因可能因为您试图将附件保存在您的OneTimeSetuporOneTimeTeardown方法中。引用文档

在 OneTimeSetUp 或 OneTimeTearDown 方法中,上下文指的是整个夹具

...这基本上意味着在 or 中不允许使用方法TestContext或属性(即使 NUnit/Visual Studio 这样做不会抱怨!这增加了混乱)OneTimeSetupOneTimeTeardown

因此,请确保从您的测试用例TearDown或测试用例中添加测试的附件。AFAIK,没有办法从TestFixture上下文中保存附件。

于 2021-03-29T11:45:07.290 回答