【问题标题】:How to handle a failed test in JBehave / Thucydides / Selenium?如何处理 JBehave / Thucydides / Selenium 中的失败测试?
【发布时间】:2014-03-13 06:14:52
【问题描述】:

我对 Thucydides / JBehave 还很陌生,但还没有找到任何发布到此的解决方案。这是我第一次使用 Thucydides / JBehave,但之前使用过 Selenium。

我有我的 .story 文件。 .story 文件列出了 5 个场景。 每个场景都在它自己的 POJO java 类中实现。 例如

public class ManagerBypassLoginSteps
{

@Steps
ManagerSteps managerSteps;

@Given("the manager is not logged in")
public void mangerLogsIn()
{
    managerSteps.start();
}

@When("the manager goes to a different page")
public void managerToDashboardPage()
{
    managerSteps.goesToDashboardPage();
}

@Then("they should see the login page")
public void managerShouldSeeLoginPage()
{
    managerSteps.verifyOnLoginPage();
    managerSteps.close();

}

}

ManagerSteps 类扩展了 net.thucydides.core.steps.ScenarioSteps,但除此之外它只是一个 POJO。 ManagerSteps 调用页面对象 - 所有非常正常的东西,按照示例。

在上述场景中,测试失败,因为代码显示错误消息而不是将用户返回到登录页面 - 没关系,安全代码不符合指定要求(还)但是,在断言之后ManagerSteps 类内部失败,测试似乎停止。这意味着我有一个浏览器实例就坐在那里,直到我关闭它。当作为一系列测试运行时,这意味着 Selenium 网格中的一个浏览器现在已绑定。

我需要一种方法来检测测试失败,调用页面对象来关闭/退出。

我找不到始终运行的 @Before 或 @After 等效项,我可以找到它我可以使用 @After 关闭页面对象的 webDriver。

我没有使用 Thucydides 来管理 WebDriver 生命周期,因为我找不到任何不使用 ThucydidesRunner.class 的示例。 我必须使用 ThucydidesRunner.class 吗?我对与 JBehave 集成 (http://thucydides.info/docs/thucydides/_writing_acceptance_tests_with_jbehave.html) 的 Thucydides 手册的印象并不表明它是必需的。

在这种情况下,其他人如何处理测试失败?

【问题讨论】:

  • 使用我能想到的最简单的 try { assertThat(dashboardPage.getCurrentUrl()).isEqualTo(loginPage.getWebsiteUrl()); } catch (final Throwable e) { dashboardPage.close();扔 e; } 但它只是感觉笨拙。

标签: selenium jbehave thucydides


【解决方案1】:

我遇到的真正问题是在测试失败后关闭浏览器。 管理 WebDriver 的最佳方法似乎是使用 Thucydides @ManagedDriver 注释来处理生命周期。 我最终使用了一个非常简单的 JUnit 跑步者,就像这样

public class UserLogin extends ThucydidesJUnitStory
{
@Managed
public WebDriver webdriver;

@ManagedPages(defaultUrl = "http://localhost:8080/dc-bus-main-web")
public Pages pages;
}

当这个启动时,它会通过 JBehave 的命名约定映射到 user_login.story 文件,然后正常启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多