我试图在c#中使用Selenium Webdriver为测试创建自定义结果文件。
我将结果写入csv文件,并在最后关闭它。
问题是,如果测试失败并且没有完成,则文件永远不会关闭,因此我无法获得结果。
我试过把文件.Close();在Teardown部分,但这并不起作用,因为" file"在那种情况下不存在。我无法看到传递它的方法。
我还尝试在安装程序中设置新的StreamWriter文件 - 这样做很好,但最后没有帮助关闭它。
我在这里搜索了一般谷歌搜索。
这是一个有效的样本 - 当它全部通过时(所有在一个地方 - 测试中的不同类)。
我希望能够移动file.Close();无论是否通过,它都将运行到哪里。
[TearDown]
public void TeardownTest()
{
try
{
driver.Quit();
}
catch (Exception)
{
// Ignore errors if unable to close the browser
}
Assert.AreEqual("", verificationErrors.ToString());
// file.Close();
// this is where it doesn't work if I put it here
}
[Test]
public void TheTest()
{
System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\results\test.csv", true);
try
{
Assert.AreEqual("text", "text");
file.WriteLine("{0},{1},{2}", "time", "test", "PASS");
}
catch (AssertionException e)
{
verificationErrors.Append(e.Message);
file.WriteLine("{0},{1},{2}", "time", "test", "FAIL");
}
//do next step
file.Close();
}
答案 0 :(得分:0)
您没有丢弃该物体。尝试使用声明https://msdn.microsoft.com/en-GB/library/yh598w02.aspx
[Test]
public void TheTest()
{
using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\results\test.csv", true))
{
try
{
Assert.AreEqual("text", "text");
file.WriteLine("{0},{1},{2}", "time", "test", "PASS");
}
catch (AssertionException e)
{
verificationErrors.Append(e.Message);
file.WriteLine("{0},{1},{2}", "time", "test", "FAIL");
}
//do next step
}
}