2

在我们的 Cruise Control 构建中,我们为 3 个浏览器运行了一套 Selenium 测试。为此,我们通过 MSTest 运行相同的测试套件,但我们在每次运行之间更改 app.config 文件以设置要使用的浏览器。

问题是在 Cruise Control 的 MSTest 报告页面中,我们看到了三个测试运行,但我们无法看到每个测试运行使用哪个浏览器。

理想情况下,我想做一些事情,比如将浏览器的名称作为参数传递给 MSTest,以便将其写入 trx 文件,但我没有看到任何可能性。我唯一考虑的是为 trx 文件指定一个指定的输出名称,然后使用 Powershell 脚本更改此文件中的 xml。

你有更好的主意吗?

4

2 回答 2

4

按照 Elena 的建议,我查看了 MSTest 中的 TestContext 对象。我最终在我的测试套件中创建了一个特定的单元测试,以将浏览器名称添加到 trx 文件中,如下所示:

[TestClass]
public class ConfigurationTests
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    public void DisplayBrowserUsedForSeleniumTests()
    {
        string browserName = ConfigurationManager.AppSettings["DriverName"];
        TestContext.WriteLine("for {0} browser.", browserName);
    }
}

在我的输出 trx 文件中,我现在有类似的内容:

<UnitTestResult testName="DisplayBrowserUsedForSeleniumTests">
  <Output>
    <TextMessages>
      <Message>for Firefox browser</Message>
    </TextMessages>
  </Output>
</UnitTestResult>

最后,我更改了 MSTest 报告的 Cruise Control xslt 转换,以在摘要标题中显示浏览器信息:

   <h2>Summary <xsl:value-of select="*[local-name()='Results']/*[local-name()='UnitTestResult'][@testName='DisplayBrowserUsedForSeleniumTests']"/></h2>
于 2012-06-20T13:19:44.763 回答
1

以下是一些可以帮助您的帖子:

我没有尝试过,但它们听起来像是您要找的东西。

编辑: 只是为了防止上面的链接有一天被破坏:

将自定义数据添加到 trx 结果文件

您可以向您的 TestMethod 添加一个 TestProperty 属性,它将出现在您的 trx 文件中。

[TestProperty("Severity", "1")]

谢谢,

阿努伊

singhhome 标记为答案 2010 年 8 月 20 日星期五 2:34 PM 2010 年 8 月 20 日星期五 5:53 AM

添加额外的测试结果信息。

要在 TRX 文件中添加附加文件- 您可以借助 TestContext 中针对每个测试的以下方法添加此文件。

TestContext.AddResultFile(filePath) 其中 filePath 是要添加到测试结果文件中的文件的路径。

要在测试运行期间获取 TestResult 文件名 - 您可以使用以下属性来获取它

TestContext.TestRunDirectory 它将为您提供存储测试运行日志的目录名称以及完整路径。对于测试运行,目录名称和 trx 文件名将相同,因此如果将此字符串与 .trx 连接,则可以很好地访问测试结果文件。

以下是示例代码片段。

[TestMethod]
public void CodedUITestMethod1()
{
        //add a file stored at c:\ location to the test result file
        this.TestContext.AddResultFile(@"c:\file.bmp");

        //Print the trx file name
        string testRunDirectory = TestContext.TestRunDirectory;
        string testRunTRXFileName = String.Concat(testRunDirectory, ".trx");
        Console.WriteLine("TestResult file : " + testRunTRXFileName);
}

Deepak.Singhal [MSFT]Microsoft 员工 2010 年 2 月 10 日星期三下午 1:32 建议为答案 Flying_Tiger 2010 年 2 月 10 日星期三下午 1:52 标记为答案

于 2012-06-06T09:16:42.933 回答