>我有 50+ 个 Watir 测试脚本,目前只检查每个脚本中定义的特定 URL。
现在,我们将启动另外 4 个站点,并希望在所有 5 个站点上运行这些测试。 保持 5 包 50+ 测试将是未来的噩梦。
有没有办法将变量传递给所有单独的测试,并带有要访问的 URL。
例如
url = "http://site1.com"
这样,如果我们想测试站点 2,我们只需要更改 url 变量,而不是每个脚本。
url = "http://site2.com"
示例测试:
require "watir-webdriver"
browser = Watir::Browser.new :chrome
browser.goto "http://url.com/"
browser.text_field(:id, "edit-search").set("Accounting")
browser.button(:value,"Search").click
browser.link(:text, "Accounting Manager with a leading US MNC").click
browser.link(:text, "Apply").click
browser.text_field(:id, "edit-firstname").set("hi2")
browser.text_field(:id, "edit-lastname").set("hi")
browser.text_field(:id, "edit-email").set("t@t.com")
browser.text_field(:id, "edit-current-job").set("Test")
browser.radio(:id, "edit-use-stored").click
browser.radio(:id, "edit-existing-cv-319706").click
browser.text_field(:id, "edit-message").set("Testing")
browser.checkbox(:id, "edit-create-alert").click
browser.button(:value,"Apply").click
browser.screenshot.save '..screenshotsApplyWithAlertNonRegistered.png'
browser.link(:text, "Home").click
browser.close
虽然我建议转向实际的测试框架,但我认为以下方法适用于您的情况。
解决方案 1 - 将值从批处理传递到测试
在测试脚本中,可以使用 ARGV 数组获取从批处理文件传入的参数。
-
在批处理文件中,可以定义 URL,然后作为参数传递给测试脚本。
SET URL="http://site2.com" ruby test_example1.rb %URL% ruby test_example2.rb %URL%
-
您的测试将获取 ARGV[0] 值并转到该值:
browser.goto ARGV[0]
-
对于每个测试运行,都需要更新批处理以获取正确的 URL。
解决方案 2 - 在帮助程序中指定 URL
另一种解决方案是在每个测试包含的变量中指定 url。这可能是一种更好的方法,尤其是在存在多个变量的情况下。
-
使用以下命令创建 test_helper.rb 文件:
url = "http://site1.com"
-
对于每个测试脚本,都需要此test_helper文件并使用 url 变量:
require "watir-webdriver" require "test_helper" #(Change path if not in the same folder) browser = Watir::Browser.new :chrome browser.goto url
-
在每次测试运行之前,请更新 test_helper.rb 文件以指向正确的 URL。
贾斯汀的回答,但另一种选择是图牛顿。它允许您根据运行的系统(本地主机,jenkins,UAT等)更改多个变量。
Justin - 在test_helper文件中,是否可以设置浏览器类型(chrome,ie或ff)并将该变量传递到每个测试脚本中;因此,如果我想更改浏览器,我只需要在test_helper文件中更改它,而不必进入每个测试脚本进行更改?
如果可能,这在test_helper文件和测试脚本中的外观如何?test_helper:类型 = ff测试脚本:浏览器 = Watir::Browser.new :type
谢谢!