Selenium c# 最终不会第二次断言条件

问题描述 投票:0回答:1

嗨,我想知道逻辑哪里出了问题,因为在输出硒中断言第一个条件,但如果显示的元素是通过或失败,则不查看第二个条件。

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");
    }
}
c# selenium-webdriver assert
1个回答
1
投票

你没有指定单元测试框架,但是断言通常结束测试无论断言是否失败,或者你调用

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 作为单元测试框架。如果这不是您正在使用的,请更新您的问题,以便我更新我的答案,但通常每个单元测试框架都会有一些这样的功能。

© www.soinside.com 2019 - 2024. All rights reserved.