如何从另一个ruby脚本中获取价值

时间:2014-07-09 07:58:37

标签: ruby

我有一个脚本testSuite.rb,它会检查一个excel以运行测试用例,然后运行它们:

if runmode == 'Y' 
  path= testcase + '.rb' 
  output = system("ruby #{path}")
  puts output

这总是返回true

在我的测试用例脚本中,根据测试结果,我有一个设置为true / false(通过/失败)的值。我希望testSuite.rb脚本捕获该值并更新excel。我该如何实现这一目标?如何从另一个ruby脚本中获取值?有没有更好的使用类获取值的方法?

Backticks给我:

  

语法错误:单词意外(期待")")

错误,load path也返回true

我不想变脏并将我的测试用例结果写入文件,然后让测试套件读取它。

2 个答案:

答案 0 :(得分:2)

只需打印它......

testcase.rb

...
print "passed"

testsuite.rb

...
output = `ruby testcase.rb` 
puts output #=> passed
...

答案 1 :(得分:1)

如果所有文件都是用Ruby编写的,那么您可以从测试套件中require测试用例(反之亦然)并调用相应的方法。但是,我们假设您的测试用例是任意可执行文件:

  

在我的测试用例脚本中,根据测试结果,我有一个设置为true / false(通过/失败)的值。我希望testSuite.rb脚本捕获该值......

您可以通过调用exit status

将此值作为exit传递
# passing_test.rb
exit

# failing_test.rb
exit(false)

# test_suite.rb
system('ruby passing_test.rb') #=> true
system('ruby failing_test.rb') #=> false

或者通过向stdout打印一些值(使用`cmd`来捕获输出):

# passing_test.rb
puts 'passed'

# failing_test.rb
puts 'failed'

# test_suite.rb
`ruby passing_test.rb` #=> "passed\n"
`ruby failing_test.rb` #=> "failed\n"

或两者兼而有之。 ($?返回Process::Status

# passing_test.rb
puts 'passed'
exit

# failing_test.rb
puts 'failed'
exit(false)

# test_suite.rb
`ruby passing_test.rb` #=> "passed\n"
$?.success?            #=> true

`ruby failing_test.rb` #=> "failed\n"
$?.success?            #=> false