grails - Geb + cucumber : Restart Browser Between Scenarios

标签 grails cucumber geb cucumber-jvm

我将 Grails 2.1.1 与 Cucumber 和 Geb 一起使用。我有一个包含 2 个场景的 Auth.feature。一种用于成功验证,另一种用于测试无效凭据。

我认为我必须解决这个问题的方法是让 geb 从第一个场景中注销用户,然后它才能运行第二个场景。这是因为我的 Given 步骤检查以确保我在登录页面。场景 1 执行后,我在仪表板页面上。

我想我的问题是(a)在完成场景之前使用 geb 注销有效用户还是(b)有没有办法让它在场景之间重新开始?

现在,我已经实现了 (a) 并且它工作得很好。只是想知道这是否是最佳的。

这是我的功能

Feature: login to system
  As a user of the system
  I want to log in to the application
  so that I can use it

  Scenario: login
    Given I access the login page
    When I enter valid credentials
    Then I see the dashboard

  Scenario: auth fail
    Given I access the login page
    When I enter invalid credentials
    Then I see appropriate error messages

这是我的 Geb 步骤
Given(~'^I access the login page$') {->
  to LoginPage
  at LoginPage
}

When(~'^I enter valid credentials$') {
  page.add('user_10001@test.com', '10001')
}

Then(~'^I see the dashboard$') {->
  at DashboardPage
}

Then(~'^I see an error message on the login page$') { ->
  at LoginPage
}

When(~'^I enter invalid credentials$') { ->
  page.add('baduser', 'paddpassword')
}

Then(~'^I see appropriate error messages$') { ->
  at LoginPage
  // check for error message
}

最佳答案

根据我所做的更多研究,看起来有几种方法可以处理这个问题:

  • 就像我已经在做一样,通过在场景结束时注销(或者你可以在开始时做
  • 让注销成为自己的场景
  • 在 env.groovy 钩子(Hook)之前,添加 to LogoutPage
  • 使用背景注销
  • 关于grails - Geb + cucumber : Restart Browser Between Scenarios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096907/

    相关文章:

    unit-testing - Grails的正确Spock语法是什么?

    Node.js BDD。 cucumber 、小 cucumber 还是 cucumber ?

    ruby - Cucumber html报告导致测试失败

    java - Geb 和 Spring-Boot 元素未找到错误

    grails - Geb - 带有日期选择器的 Selenium 输入焦点

    testing - 在不打开浏览器的情况下使用 chromeDriver 运行 Geb 测试

    hibernate - Grails 从 Hibernate XML 到 GORM 的转换

    grails - 如何在 Grails BuildConfig.groovy 中指定 JAR 依赖项?

    testing - 如何识别 cucumber 上带有数字 ID 的场景和步骤?

    grails - Config.groovy中的applicationContext