我正在使用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
答案 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