我有一个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次通过的测试。
知道如何解决这个问题吗? 我需要忍受它,因为它是一个微软功能/错误??
我记得有人提出了类似的问题而没有解决这个问题吗?
这是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);
}