2012-10-09 150 views
0

我正在通过命令行运行jmeter测试计划,并且它的所有工作都正常,但是我想从jmeter返回两个值:一个布尔型字段,指示是否有错误被任何步骤抛出执行(本质上是合格/不合格指示符)以及在jMeter中生成并存储在用户定义的变量中的值。有没有可能做到这一点,如果是的话如何?JMeter命令行执行 - 返回状态

回答

0

在我伸出一个BeanShell的监听剧本我写的任何错误的状态到一个txt文件,以及我所需要的变量结束。然后我可以在我的批处理文件中解析这个txt文件来提取变量,并根据文件中是否存在“error”来检查通过/失败。每次执行后我都删除了txt文件,以便每次执行时都能生成一个新文件。

+0

听起来很酷(垫) – ant

1

您可以添加Beanshell Sampler作为测试(最后一步)的一部分。在这个测试步骤中,您可以将这些值写入文件。测试完成后,您可以将这些值存储在文件中。

让我知道如果你需要进一步的解释/例如

+0

在出现错误的情况下,被抛出的计划移动到下一个线程,假设这样就不会得到在该执行案件? – Paddy

+0

这真的取决于你的测试用例结构。如果您不能看到该特定组的结果,那么这可能意味着在线程组中出现错误,您可以将这个beanshell采样器放入每个测试中。 – ant

0

如果您希望控制台退出代码与测试结果匹配,解决方案将是测试“生成摘要结果”侦听器,如果发生任何错误。我发现这种方法herehere

如果发生任何错误,您基本上会分析总结结果并相应地设置控制台退出代码。

grep的方法

直接使用grep JMeter的呼叫,所描述here

#!/bin/bash 
if java -jar ./apache-jmeter-2.9/bin/ApacheJMeter.jar -n -t x.jmx | grep "0 
(0.00%)$" 
then 
    echo Success 
    exit 0 
else 
    echo Failure 
    exit 1 
fi 

的Python方法

或使用Python描述here

#!/usr/bin/bash 
jmeter -n -t script.jmx | process_results.py 
if [ $? -ne 0 ]; then 
    echo '[TEST FAILED]' 
else 
    echo '[TEST SUCCESSFUL]' 
fi 

process_results.py(略作修改,它仅警报如果错误计数> 0)

#!/usr/bin/python 
import re 
import sys 

for line in sys.stdin: 
    print line, 
    match = re.search('summary =[\s].*Err:[ ]{0,10}([1-9]\d{0,10})[ ].*',line) 
    print 'Check in line if Err: > 0 -> if so Error occured -> Test fails: ' 
    print match 
    if match : 
     print "exit 1" 
     sys.exit(1) 
print "nothing found - exit 0" 
sys.exit(0)