如何在失败的测试中关闭结果文件?使用Webdriver,c#

时间:2016-08-23 13:35:20

标签: c# selenium selenium-webdriver teardown

我试图在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();
    }

1 个答案:

答案 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

        }
    }