我有一个脚本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
。
我不想变脏并将我的测试用例结果写入文件,然后让测试套件读取它。
答案 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