将Faker Gem值置于哈希值

时间:2014-10-08 23:14:21

标签: ruby hash cucumber capybara faker

我正在使用Cucumber,Capybara,WebDriver,SitePrism和Faker编写自动化测试。我是新手,需要一些帮助。

我有以下步骤..

Given (/^I have created a new active product$/) do
  @page = AdminProductCreationPage.new
  @page.should be_displayed
  @page.producttitle.set Faker::Name.title
  @page.product_sku.set Faker::Number.number(8)
  click @page.product_save
  @page.should have_growl text: 'Save Successful.'
end

When (/^I navigate to that product detail page) do
   pending
end

Then (/^All the data should match that which was initially entered$/) do
   pending
end

在config / env_config.rb中我设置了一个空哈希...

Before do
   # Empty container for easily sharing data between step definitions

   @verify = {}
end

现在我想在“给定”步骤中散列Faker生成的值,以便我可以在“When”步骤中正确保存它。我还想在下面的脚本中将faker生成的值输入搜索字段。

  @page.producttitle.set Faker::Name.title
  1. 如何将faker生成的值推送到@verify?
  2. 如何提取该值并将其插入文本字段?
  3. 如何提取该值以验证保存值是否等于faker生成的值?

1 个答案:

答案 0 :(得分:1)

<强> 1。如何将faker生成的值推送到@verify?

hash只是键值对的字典,您可以使用hash[key] = value进行设置。

密钥可以是字符串@verify['new_product_name'] = Faker::Name.title

密钥也可以是符号@verify[:new_product_name] = Faker::Name.title

由于您生成的值可能在步骤定义中多次使用(一次用于存储在@verify哈希中,一次用于设置字段值),我个人更喜欢先将它存储在局部变量中,并引用在需要的地方。

new_product_title = Faker::Name.title
@verify[:new_product_title] = new_product_title

<强> 2。如何提取该值并将其插入文本字段?

您可以按键引用值。因此,在将值存储在哈希中之后,您可以执行此操作 @page.producttitle.set @verify[:new_product_name]

或者,如果您将其存储在如上所述的本地变量中,您只需执行此操作

@page.producttitle.set new_product_name

第3。如何提取该值以验证保存值是否等于faker生成的值?

同样,您可以断言字段值等于您在散列中存储的值。一个例子是@page.producttitle.value.should == @verify[:new_product_name]

把这一切放在一起:

Given (/^I have created a new active product$/) do
  @page = AdminProductCreationPage.new
  @page.should be_displayed

  # Create a new title
  new_product_title = Faker::Name.title

  # Store the title in the hash for verification
  @verify[:new_product_title] = new_product_title

  # Set the input value to our new title
  @page.producttitle.set new_product_title

  @page.product_sku.set Faker::Number.number(8)
  click @page.product_save
  @page.should have_growl text: 'Save Successful.'
end

When (/^I navigate to that product detail page) do
   pending
end

Then (/^All the data should match that which was initially entered$/) do
  @page.producttitle.value.should == @verify[:new_product_title]
end