0

如您所见,我正在尝试从.yml位于表中的文件中config/environments获取值Examples:

但是不是获取它而是按原样发送值?

可以这样传递参数吗?如果是,如何?

如果不是,那么 Ruby 或 Cucumber 的哪个特性/概念会阻止用户这样做,为什么?

Feature: Verify login of all test users
I want to verify all test users can login.
  Scenario Outline: Login as different users on the website
    Given I am on login page
    When I enter "<username>" and password
    Then I click Login button
    And I see "<user>" successfully logged in
    Examples:
    |user|username|
    |testuser1|#{FigNewton.test1_email}|
    |testuser2|FigNewton.test2_email|
4

3 回答 3

1

首先,这是一个非常糟糕的功能,更好的是

Scenario: Test Users can login
   Given there are some test users
   When the test users login
   Then all test users should be logged in

或类似的东西。功能用于说明您想要做什么以及为什么,而不是您如何做事。

如果您执行上述操作,那么所有编程都将在步骤定义中完成。这将允许你做任何你想做的事。

您可以很容易地实现这一点,例如

Given 'there are some test users' do
  @test_users = create_test_users
end

When 'the test users login' do
  @login_results = login_each(@test_users)
end

Then 'all test users should be logged in' do
  expect(check_for_errors(@login_results).count).to eql 0
end

then implement the methods you need in a step helper e.g

module TestUsersLoginStepHelper
  def create_test_users
    ...

  def login_each(users)
    users.each do 
      ...
  ...
end
World TestUsersLoginStepHelper

通过将所有工作都放在步骤定义中,您可以使您的生活变得更加轻松,因为您可以使用 ruby​​ 的全部功能来做您需要的事情

于 2015-01-22T23:31:53.347 回答
0

对查询 1的回答: 您可以通过Examples:表进行参数化,但不能使用直接传递值, FigNewton gem因为它是一个.feature文件而不是 Ruby.rb文件。

对查询 2 的回答: 您是如何做到的:在用户名上对其进行参数化和循环,并在您steps definition提到找到特定用户名时要做什么。通过这个,您可以轻松地进行参数化。

  1. 例子:

    |user|username|
    |testuser1|test1|
    |testuser2|test2|
    
  2. 步骤定义

    When(/^I enter "([^"]*)" and password$/) do |username|
    case username
    when 'test1'
      on(LoginPage).user_email = FigNewton.test1_email
    when 'test'
      on(LoginPage).user_email = FigNewton.test2_email
    end
    ....
    ....
    end
    
于 2015-01-22T19:08:29.637 回答
-1

您可以在需要时在项目中使用这个 DDD 场景——通过使用这个我们不需要创建多个测试用例,它会从示例大纲中获取数据值。

功能文件:测试用例

场景大纲:登录应用程序

当我输入“用户名>”和“密码>”时

然后我点击登录按钮

我看到用户成功登录

例子:

|用户名|密码|

|abc@gmail.com|Test1234!|

|abc@yahoo.com|Test1234!|


步骤定义:

当(/^我输入"([^"] )"和"([^"] )"$/)做|username,password|

睡 20

on(Login).email_edit_text_element.send_keys 用户名 on(Login).password_edit_text_element.send_keys 密码

结尾

然后(/^I click Login button$/) do sleep 20

on(Login).login_button_element.click

结尾

然后(/^我看到用户成功登录$/) 做

期望(在(登录).account_bg_cover_element.displayed?).to be_truthy

将“登录成功” 结束

在 ruby​​ 文件中,您已经创建了方法,您在步骤定义中调用了这些方法。它会起作用的。确保您传递的参数的名称。

于 2015-12-01T11:38:09.877 回答