当前位置: 首页 > 知识库问答 >
问题:

Selenium测试没有正确失败-通过时配置失败,而不是“正确”失败

彭海阳
2023-03-14
package Links;

import org.testng.annotations.*;
import static org.testng.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestArea {
    private WebDriver driver;
    private StringBuffer verificationErrors = new StringBuffer();

@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
    System.setProperty("webdriver.gecko.driver", "C:\\Automation\\SeleniumFiles\\Browser Drivers\\geckodriver.exe");
    driver = new FirefoxDriver();

}

@Test
public void Example() throws Exception {
    driver.get(
            "http://MyWebsite");
    try {
        assertTrue(isElementPresent(
                By.xpath("The Element I want look for ")));

    } catch (Error e) {
        verificationErrors.append(e.toString());
    }
}
// -------------------------------------------------------------------------------------

@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

private boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}
}

一个“通过”测试但配置失败的示例。

失败的配置:@afterclass tearDown java.lang.assertionerror:java.lang.assertionerror:expected[true],但在)在org.testng.internal.MethodInvocationHelper.invokeMethodCommissioningTimeout(methodInvocationHelper.java:59)在org.testng.internal.invoker.invokeConfigurationMethod(invoker.java:455)在org.testng.internal.invoker.invokeConfigurationMethod(invoker.java:222),在org.testng.internal.invokeConfigurationSethod(invoker.java:222),在worker.run(testmethodworker.java:111)在org.testng.testrunner.privaterun(testrunner.java:648)在org.testng.testrunner.run(testrunner.java:505)在org.testng.testrunner.run(testrunner.java:505)在org.testng.suiterunner.runtest(suiterunner.java:455)在org.testng.suiterunner.runtest(unnerworker.java:52)在org.testng.suiterunnerworker.run(suiterunnerworker.java:84)在org.testng.testng.runsuitessequential(testng.java:1208)在org.testng.testng.runsuiteslocal(testng.java:1137)在org.testng.testng.runsuiteslocal(testng.java:1049)在g.remote.remoteStng.initandrun(remoteStng.java:251)位于org.testng.remote.remoteStng.main(remoteTestng.java:77)

已通过:示例

===========================================================================================================================

=============================================================================================================================================

当测试可以找到元素时,我不会得到配置问题。

事先非常感谢

共有1个答案

傅皓君
2023-03-14

测试代码中存在一些问题。

默认情况下,TestNG在以下情况下失败@test方法:

  • 断言失败
  • 测试方法引发异常。
import org.testng.annotations.*; 
import static org.testng.Assert.*; 
import org.openqa.selenium.*; 
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestArea { 
    private WebDriver driver; 

    @BeforeClass(alwaysRun = true) 
    public void setUp() throws Exception { 
        System.setProperty("webdriver.gecko.driver", "C:\\Automation\\SeleniumFiles\\Browser Drivers\\geckodriver.exe"); 
        driver = new FirefoxDriver();
    }

    @Test 
    public void Example() throws Exception { 
        driver.get( "http://MyWebsite"); 
        assertTrue(isElementPresent( By.xpath("The Element I want look for ")));
    } 

    @AfterClass(alwaysRun = true) 
    public void tearDown() throws Exception { 
        driver.quit(); 
    }

    private boolean isElementPresent(By by) { 
        try { 
            driver.findElement(by); 
            return true; 
        } catch (NoSuchElementException e) { 
            return false; 
        } 
    } 
}
 类似资料:
  • “通过”测试但配置失败的示例。 配置失败:@afterclass tearDown java.lang.assertionerror:java.lang.assertionerror:应为[true],但在org.testng.assert.fail(assert.java:96)在links.testarea.tearDown(Testarea.java:96)在sun.reflect.nati

  • 问题内容: 我正在使用Django 1.7和django-rest-framework。 我制作了一个API,该API返回了一些JSON数据,并将其放入了我的 settings.py 当我进行GET调用时,它将返回我所有的数据,但是当我尝试使用PUT / PATCH时,我得到: 仅当我登录时才会发生这种情况,如果我是匿名用户,则可以正确进行PUT / PATCH。 我尝试过,但遇到错误,我将设置包

  • 问题内容: 我已经设置了一个Jenkins服务器来运行Selenium测试。生成脚本是用Ant(CentOS 6.3上的v 1.7.1)编写的,并且测试在Sauce Labs上运行。我通过外壳执行构建: 问题是测试失败时,詹金斯(Jenkins)将其标记为成功。我可以通过将设置为来避免这种情况,请参阅: 但是,这并不理想,因为Jenkins会在遇到第一个故障时终止构建。构建完成后是否可以检查失败,

  • 我已经设置了一个Jenkins服务器来运行Selenium测试。构建脚本是用Ant(CentOS 6.3上的V1.7.1)编写的,测试在Sauce实验室上运行。我通过shell执行构建:

  • 安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。

  • 我已经看过这些帖子: 谷歌云数据流 - 从Pub到镶木地板 谷歌数据流“工作流程失败”无缘无故 它们很有帮助,我最终为发布/订阅消息创建了类似的东西,比如:<code>{“id”:“1”}</code>(仅用于测试): 我只能看到错误“工作流失败”。但仅对于DataflowRunner,对于DirectRunner,我没有问题。这里是“运行”命令: 以下是此作业的日志(前几行是最后出现的): 现在