gpt4 book ai didi

ruby - 在 Ruby 中测试整个脚本

转载 作者:行者123 更新时间:2023-11-28 21:02:19 26 4
gpt4 key购买 nike

测试整个脚本的最佳方法是什么?我想测试脚本是否返回(打印)正确的结果。到目前为止,我所拥有的是另一个脚本,或多或少只是:

#test.rb

expected = 'test'
output = `script.rb --many params`
if output != expected
puts "Error"
end

在这个例子中,我要测试的脚本叫做script.rb。干杯。

最佳答案

使用 test-unit 你最终得到这样的代码:

class TestScript < Test::Unit::TestCase
def test_output
assert_equal 'test', `script --options`
end
end

您可能想要使用 open3处理程序输出时的库,因为它可以让您更好地控制它的处理方式。您也可以为此编写自己的包装器,例如 assert_output_equal:

def assert_output_equal(output, command, message = nil, &block)
Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
assert_equal output, stdout.read, message, &block
end
end

您可以添加它来测试您的进程的状态,确保它成功,并且没有任何关于 STDERR 等的输出。

当谈到测试产生大量文本输出的东西时(例如 JSON 数据、格式化列表),我发现最好在 test/expect 之类的地方创建文件并将文件与输出而不是定义源中的文本。这使得首先创建文件变得容易:

old_script > test/expected/old_script.default
old_script --option > test/expected/old_script.with-option

当需要调整某些内容时,它还使您的版本控制差异更易于阅读。

关于ruby - 在 Ruby 中测试整个脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com