#c# #selenium #testing #nunit
#c# #селен #тестирование #nunit #selenium
Вопрос:
У меня есть вопрос по поводу атрибута NUnit retry, который мы используем
NUnit 3.12.0
NUnit3TestAdapter 3.17.0
C# and Selenium
Это типичный файл функций
Test.feature
Scenario Template: 01 Test footer options - Homeowner
Given we set the destination to the homepage
When we select footer option "1"
Then we should see the url "tester" and title "test page"
Это и есть крючок
Hooks.cs
[BeforeFeature(Order = 1)]
[Test, Retry(2)]
public static void BeforeFeatureTab(FeatureContext featureContext)
{
etc
}
И вот мы имеем дело с тем, что неудача была захвачена
public void AssertUrlContains(string comparing, IWebDriver driver)
{
var currentUrl = driver.Url;
try
{
WriteToReport(Status.Pass, "Pass: URL is correct");
Assert.That(currentUrl.Contains(comparing));
}
catch (Exception ex)
{
WriteToReport(Status.Fail, "Fail error: " ex);
Assert.That(false);
}
}
Теперь я подумал о том же самом.Это (false) вызвало бы повторную попытку, но это сейчас. Кто-нибудь может посмотреть, что я сделал неправильно или пропустил приятно.
Спасибо
Кев
Комментарии:
1. Вы пробовали использовать
Assert.Fail
вместоAssert.That
? Я думаю,Fail
выдает конкретное исключение, которое может быть тем, к чему подключается логика повторной попытки. Никогда не использовал это раньше, хотя это просто идея 🙂2. Недавно я перешел от сбоя к этому
Ответ №1:
Хотя вы не пометили его, я предполагаю, что вы используете SpecFlow. Хотя я не настолько хорошо разбираюсь в этом, я кое-чему научился, помогая людям, которые используют NUnit с этим. Тем не менее, вот что я думаю…
BeforeFeatureAttribute
Преобразуется в NUnit OneTimeSetUpAttribute
(ранее TestFixtureSetUpAttribute
, вызываемый перед запуском любых тестов. OTOH, TestAttribute
указывает, что метод является тестовым примером. IOW, вы говорите, что один и тот же метод должен быть вызван NUnit для инициализации прибора и в качестве теста. Вероятно, это приводит к возникновению исключения.
В NUnit неожиданные исключения рассматриваются не как сбои, а как ошибки. Ошибка, как правило, что-то не так с вашим тестом, а не с системой, которую вы тестируете, поэтому она обрабатывается по-разному. В частности, повторяются только сбои, а ошибки — нет.
Обратите также внимание, что NUnit ничего не знает о SpecFlow, поэтому, если это исключение specflow, это будет рассматриваться как ошибка, как и любое другое исключение.
Лучше всего прекратить использовать один и тот же метод как для теста, так и для инициализации прибора.
Комментарии:
1. Спасибо, Чарли, я займусь этим