2016-08-23 5 views
0

Я пытаюсь создать настраиваемый файл результатов для тестов с использованием Selenium Webdriver в C#.Как закрыть файл результатов при неудавшемся тесте? Использование Webdriver, C#

Я пишу результаты в файл csv и закрываю его в конце.

Проблема заключается в том, что если тест завершается с ошибкой и не завершается, файл никогда не закрывается, и поэтому я не получаю результаты.

Я пробовал положить файл.Close(); в разделе Teardown, но это не работает, потому что в этом контексте «файл» не существует. Я не вижу способа передать его.

Я также попытался настроить новый файл StreamWriter в Setup - это было прекрасно, но не помогло закрыть его в конце.

Я искал здесь и общий поиск по Google.

Вот пример того, что работает - когда все проходит (все в одном месте - разные классы в тесте).

Я хочу, чтобы иметь возможность перемещать файл.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

Попробуйте объявить 'File' как общественности на' class' уровне, так что он будет доступен для всех методов вашего класса – Siva

+0

Спасибо - что работал отлично! – Akcipitrokulo

ответ

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 

     } 
    }