在 TestKitchen describe 块中,我正在运行一个命令,将其输出加载到一个变量中,然后在该输出上运行多个期望语句来验证它的不同部分。最终目标是使用它作为 CI 构建的一部分来进行黑盒测试。
在这种情况下,我调用 Jmeter(使用它来运行远程代理以执行非 DUT 测试),然后运行它返回的结果,检查每个测试(是的,是的......这有点讨厌,但它很有效) :
describe "Test Transparent Proxy (JMeter)" do
$jmeter_run = command("/usr/local/apache-jmeter-2.13/bin/jmeter -n -t /root/jmx/mytest.jmx -r -Jremote_hosts=192.168.7.252 -Gdut_ip=#$internal_ip -X -l /dev/stdout 2>&1").stdout
it 'test1' do
expect($jmeter_run).to match /text_to_match/
end
it 'test2' do
expect($jmeter_run).to match /more_text to match/
end
end
测试本身运行良好,但我发现我正在运行多个 jmeter 运行(不同的测试集),它们在测试规范中是如何定义的。我还有其他正在围绕 Jmeter 测试执行的块。这是我的流程:
block 1
block 2
block 3 (Jmeter1)
block 4
block 5 (Jmeter2)
我得到的是:
block5
block3
block1
block2
block4
我发现的所有文档似乎都没有给我任何关于如何避免这种情况的线索。我不想将命令执行放在它自己的应该/期望块中,因为我希望/需要能够判断单个测试是否失败。我还想避免运行 50 多个单独的 Jmeter 测试(即使每次运行平均 20 次测试,每个测试大约需要 5 秒)。
帮助?:D