Selenium c#在失败时继续
本文关键字:继续 失败 Selenium | 更新日期: 2023-09-27 18:08:55
我正在尝试使用c#学习Selenium Webdriver的自动化。我有我的自定义方法Assert
。我所做的是在捕获AssertFailedException
后继续测试使用下面的try-catch
是我的代码
public static void assert(string value, IWebElement element)
{
try
{
Assert.AreEqual(value, element.Text);
}
catch (AssertFailedException e)
{
Console.WriteLine(e.Message.ToString());
}
}
我的问题是它捕获了所有AssertFailedException
(这是我的目标),但测试的结果在visual studio中通过了。我的问题是,如果控制台包含异常,我如何实现失败时继续测试和失败测试。提前谢谢你们!
据我所知,您希望在测试中进行多次检查,并在测试的最后确定是否有任何检查失败。您可能需要编写一些自定义代码来实现这一点。例如,您可以引入一个类Assertion
:
internal class Assertion
{
private readonly string title;
private readonly object expected;
private readonly object actual;
public Assertion(string title, object expected, object actual)
{
this.title = title;
this.expected = expected;
this.actual = actual;
}
public bool IsMatch()
{
return this.actual == this.expected;
}
public override string ToString()
{
return $"Title: {title}. Expected: {expected}. Actual: {actual}";
}
}
当您的测试运行时,您将创建Assertion
类的新实例并将它们存储在一个列表中。在测试结束时,您可以使用以下方法:
private static void VerifyAssertions(Assertion[] assertions)
{
var failedAssertions = assertions.Where(a => !a.IsMatch()).ToArray();
if (failedAssertions.Any())
{
throw new AssertFailedException(string.Join<Assertion>("; ", failedAssertions));
}
}
对于次要检查,您可以尝试使用verify而不是assert。默认情况下,Assert表示主要检查点和脚本执行将在失败时终止,如果捕获到异常,报告将被忽略-这是预期的行为。然而,验证表明,即使在失败时脚本也可以继续运行——在这种情况下,将报告失败的步骤,脚本将继续运行。
简单地说,当您不希望脚本在失败时继续运行时使用assert,当您希望脚本报告失败并继续运行时使用verify。