感谢我在这里收到的帮助,我有一个测试套件的ruby测试,它们在CI服务器中不断验证或用户界面(使用Watir)。然而,出现了新的要求,实际上突出了CI设置中的一个错误。
所以在rakefile中我有以下
require 'rake/testtask'
require './modules/utilities'
gem 'test-unit'
require 'test/unit'
require 'ci/reporter/rake/minitest'
randomId = 1 + rand(100000)
Server ||= "http://someserver_hostname:8080/login.html"
NormalUser = "watir" + randomId.to_s + "_normal"
AdminUser = "watir" + randomId.to_s + "_admin"
Password = "Watir_" + randomId.to_s
Rake::TestTask.new(:runtests) do |t|
t.libs << "test"
t.test_files = FileList['./**/Test*.rb']
t.verbose = true
end
task :testSetup do
Server = "http://#{ENV["server"]}:8080/login.html"
p "Using the following server\n\n#{Server}\n\n"
#Lets create our own user for these tests
createNormalUser(NormalUser, Password)
createAdminUser(AdminUser, Password)
end
task :testCleanUp do
#Delete our own user
deleteUser(NormalUser)
deleteUser(AdminUser)
end
task :runAllTests => [:testSetup,:runtests, :testCleanUp]
目标是有人可以在Jenkins中手动运行构建并指定(通过下拉列表)运行测试的服务器。我已完成所有设置,并在所选服务器中创建用户。问题是测试是使用ruby脚本中其他位置的硬编码服务器变量运行的,该变量定义为
Server ||= "http://Server_hostname:8080/login.html"
如果我正确读取它,只会在没有定义的情况下重新分配服务器,这正是我需要的。问题是,如果我删除此定义,则服务器未定义。如果我保留它,测试将针对此主机名运行,而不是我在rakefile中定义的那个。显然我已经在某个地方搞砸了,但我不明白为什么在rakefile中设置的服务器在测试脚本中不可见,因为它只是一个进程 感谢
我应该补充一点,createXXUser方法和deleteUser方法都能正常工作,即具有Server,NormalUser,Password等的正确值