在这里,您可以看到我正在尝试从位于.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|
答案 0 :(得分: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
通过将所有工作放在步骤定义中,您可以更轻松地实现自己的生活,因为您可以使用红宝石的全部功能来满足您的需求
答案 1 :(得分:0)
回答query1:
您可以通过Examples:
表进行参数化,但不能使用FigNewton gem
直接传递值,因为它是.feature
文件而不是Ruby .rb
文件。
回答query2:
你是怎么做到的:
参数化并在用户名上循环它,并在steps definition
中提及找到特定用户名时要执行的操作。通过这种方式,您可以轻松进行参数化。
示例:
|user|username|
|testuser1|test1|
|testuser2|test2|
步骤定义
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
答案 2 :(得分:-1)
您可以在需要时在项目中使用此DDD场景 - 通过使用此方法,我们不需要创建多个测试用例,它将从示例大纲中获取数据值。
功能文件:测试用例
场景概要:登录到应用程序
当我输入&#34;用户名&gt;&#34;和&#34;密码&gt;&#34;
然后我点击登录按钮
我看到用户已成功登录
示例:
|用户名|密码|
| abc@gmail.com | Test1234 |!
| abc@yahoo.com | Test1234 |!
步骤定义:
何时(/ ^我输入&#34;([^&#34;] )&#34;和&#34;([^&#34;] ) &#34; $ /)do |用户名,密码|
睡觉20
on(登录).email_edit_text_element.send_keys用户名 on(登录).password_edit_text_element.send_keys密码
<强>端强>
然后(/ ^我点击登录按钮$ /)执行 睡20个。
上(登录).login_button_element.click
<强>端强>
然后(/ ^我看到用户成功登录$ /)执行
期待(on(登录).account_bg_cover_element.displayed?)。to be_truthy
将登录成功&#39; 的端强>
在ruby文件中,您已经创建了方法,您在步骤定义中调用了这些方法。 它会工作。确保你传递的参数的名称。