1

在 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

4

1 回答 1

1

好吧,我自己设法解决了这个问题。

经过大量修补后,我最终在测试中运行了命令:

  it 'JMeter executed correctly' do
    $jmeter_run1 = 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
    expect($jmeter_run1).not_to be_empty
  end

现在一切都按应有的顺序运行良好,一切都很愉快。

于 2015-09-03T23:58:26.127 回答