1

感谢我在这里收到的帮助,我有一个 ruby​​ 测试套件,这些测试套件在 CI 服务器中不断验证或 UI(使用 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"

如果我正确阅读它,只会在尚未定义服务器的情况下重新分配服务器,这正是我所需要的。问题是如果我删除这个定义,那么 Server 是未定义的。如果我把它留在里面,测试将针对这个主机名而不是我在 rakefile 中定义的主机名运行。显然我在某个地方搞砸了,但我不明白为什么在 rakefile 中设置的服务器在测试脚本中不可见,因为它都是一个进程谢谢

我应该补充一点,createXXUser 方法和 deleteUser 方法都可以正常工作,即 Server、NormalUser、Password 等具有正确的值

4

0 回答 0