c# - MSTEST - MSTest中的测试结果文件显示每个测试的所有附件(通过和失败)

时间:2016-08-01 11:18:06

标签: c# unit-testing visual-studio-2015 mstest testcontext

我有一个selenium自动化套件,如果测试失败,测试用例可以截取屏幕截图。

所有测试都是单元测试并且是datadriven。 数据驱动的意思是对每个数据行执行测试。请参阅下面的示例代码

    [TestMethod]
    [TestCategory("UITest"), TestCategory("Flow")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\allFlows.xml", "flow", DataAccessMethod.Sequential)]
    public void MyTest()
    {
       //TEST CODE
    }

以上代码是通过allFlows.xml

中的数据流数量来进行数据驱动的

我面临的问题是当测试失败时,会生成屏幕截图,并且我能够看到每个测试附带的屏幕截图(包括通过测试) 我相信这会使trx文件变得笨重

比如说我有1个测试,allFlow.xml中有5个流数据。因此,执行的总测试为5,并且假设2次测试失败。

报告称3次测试通过,2次测试失败。我现在有两个失败测试的截图。

问题是除了2次失败的测试之外,屏幕截图还附加了所有3次通过的测试。

知道如何解决这个问题吗? 我需要忍受它,因为它是一个微软功能/错误??

问题类似于此 C# - .NET - MSTest - Test context - Add result file - Selenium Screenshots - Issue while viewing the result file

我记得有人提出了类似的问题而没有解决这个问题吗?

这是MSTest功能吗?

任何帮助都会很棒。

SCREENSHOT代码如下

                Directory.CreateDirectory(testContext.TestResultsDirectory);
                Screenshot screenShot = ((ITakesScreenshot)driver).GetScreenshot();
                String CurrentIteration = testContext.DataRow.Table.Rows.IndexOf(testContext.DataRow).ToString();
                string fileName = testContext.TestResultsDirectory+ "\\Screenshot_" + testContext.TestName + "_RowNumber " + CurrentIteration + "_" + DateTime.Now.ToString("yyyy-dd-MM-HH-mm-ss") + ".png";
                screenShot.SaveAsFile((fileName), ImageFormat.Png);
                Wait.WaitBetweenSteps(3000);  

由于

********** EDIT ************* *********************

 [TestClass]
public class Driver
{
    IWebDriver driver;
    private TestContext testContext;
    public TestContext TestContext
    {
        get { return testContext; }

        set { testContext = value; }
    }


    [ClassInitialize]
    public static void ClassInit(TestContext testContext)
    {
        DriverData driverData = new DriverData();
        driverData.CreateTestData();
    }

    [TestInitialize]
    public void Init()
    {
    //Some Init Code
    }

    [TestMethod]
    [TestCategory("UITest"), TestCategory("Flow")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\allFlows.xml", "flow", DataAccessMethod.Sequential)]
    public void MyTest()
    {
       //TEST CODE
        Flow flow = new TestDataUtilities().generateFlowFromDataRow(testContext.DataRow);
       //Here if Failed then call GetScreenShot(testContext);
       try{
       //TEST CODE
       }
       catch(Exception){
       GetScreenShot(testContext);
       }
    }
}
            GetScreenShot(testContext)
            {
            Directory.CreateDirectory(testContext.TestResultsDirectory);
            Screenshot screenShot = ((ITakesScreenshot)driver).GetScreenshot();
            String CurrentIteration = testContext.DataRow.Table.Rows.IndexOf(testContext.DataRow).ToString();
            string fileName = testContext.TestResultsDirectory+ "\\Screenshot_" + testContext.TestName + "_RowNumber " + CurrentIteration + "_" + DateTime.Now.ToString("yyyy-dd-MM-HH-mm-ss") + ".png";
            screenShot.SaveAsFile((fileName), ImageFormat.Png);
            Wait.WaitBetweenSteps(3000);  
            }       

0 个答案:

没有答案