我有一个 selenium 自动化套件,如果测试失败,测试用例可以截屏。
所有的测试都是单元测试并且是数据驱动的。我所说的数据驱动的意思是对每个数据行执行测试。请参阅下面的示例代码
[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 个屏幕截图。
问题是除了 2 个失败的测试之外,所有 3 个通过的测试都附加了屏幕截图。
知道如何解决这个问题吗?我需要忍受它,因为它是微软的功能/错误吗?
问题类似于此 C# - .NET - MSTest - 测试上下文 - 添加结果文件 - Selenium 屏幕截图 - 查看结果文件时出现问题
我记得有人提出了类似的问题,但没有解决方案?
这是 MSTest 功能吗?
任何帮助都会很棒。
屏幕截图代码如下
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);
谢谢
*********************************编辑**************** ******************
[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);
}