在mstest trx输出文件中注入自定义数据

时间:2012-06-04 15:03:38

标签: selenium cruisecontrol.net mstest

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

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

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

你有更好的主意吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

我没有尝试过,但他们听起来像是你正在寻找的。

修改 就这种情况而言,上面的链接有一天会被打破:

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

  

您可以将TestProperty属性添加到TestMethod,它将显示在您的trx文件中。

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

谢谢,

     

Anuj

     

由singhhome于2010年8月20日星期五下午2:34标记为回答   2010年8月20日星期五上午5:53

添加其他测试结果信息。

  

在TRX文件中添加其他文件 - 您可以在TestContext中为每次测试提供以下方法的帮助。

     

<强> TestContext.AddResultFile(文件路径)   其中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]微软员工于2010年2月10日星期三下午1:32提出答案   Flying_Tiger在2010年2月10日星期三下午1:52标记为答案