嗨,我想知道逻辑哪里出了问题,因为在输出硒中断言第一个条件,但如果显示的元素是通过或失败,则不查看第二个条件。
foreach (var element in options)
{
if (element.Text.Contains("5/1, test road"))
{
element.Click();
var Add = driver.FindElement(By.CssSelector(".ui-click__confirm"));
Add.Click();
Assert.Pass("Test has been selected from the list");
}
else
{
Assert.Fail("Test has not been selected from the list");
}
var AssociatedProperty = driver.FindElement(By.CssSelector(".ui-click__confirm--has-test"));
if (AssociatedProperty.Displayed==false)
{
Assert.Fail("Test record has not passed");
}
else
{
Assert.Pass("Tenant record has passed");
}
}
你没有指定单元测试框架,但是断言通常结束测试无论断言是否失败,或者你调用
Assert.Pass(...)
。本质上,断言抛出一个异常,该异常被单元测试框架捕获。单元测试框架将根据异常的种类通过或失败测试。
在你的情况下,我看到多个
Assert.Pass(...)
电话。每一个都将结束测试,并将其标记为通过。这意味着测试运行器不会执行 Assert.Pass
方法调用之外的任何代码。
如果您希望继续进行测试,请忽略对
Assert.Pass
的调用。此外,在断言中测试方法或属性返回值是惯用的,而不是使用 and if
语句后跟 Assert.Fail
.
这可能是代码的外观,因此它会检查您想要的所有条件,同时使用更典型的编码风格进行测试:
foreach (var element in options)
{
Assert.True(element.Text.Contains("5/1, test road"), "Test has not been selected from the list");
element.Click();
var Add = driver.FindElement(By.CssSelector(".ui-click__confirm"));
Add.Click();
var AssociatedProperty = driver.FindElement(By.CssSelector(".ui-click__confirm--has-test"));
Assert.True(AssociatedProperty.Displayed, "Test record has not passed");
}
此代码假定 NUnit 作为单元测试框架。如果这不是您正在使用的,请更新您的问题,以便我更新我的答案,但通常每个单元测试框架都会有一些这样的功能。