下午好!
我会尽力向你解释我的问题。
我有一个 JMeter TestPlan,它将HTTP请求发送到服务器。我有一个Beanshell脚本来断言返回的每个不同的错误情况。
在每个错误200中,我检查响应数据字符串以查看它是错误还是正确的情况。 (用户错误,例如用户没有正确的权利 确定,但服务器不可用 错误,两者都是有200作为响应代码。)
这是我的测试计划:
因为我只有一个断言脚本返回了几个错误,所以我无法区分每个错误,除非在ViewResultTree
中解开断言。但是我在启动测试时禁用它,我将远程启动我的TestPlan。
我有想法手动计算每个错误。我的所有示例都在我的Assertion脚本中,并根据其内容转到正确的if
块。我在每个块中增加了一些变量(实际上是JMeter.properties)。
int test = Integer.parseInt(props.getProperty("302"));
test++;
props.setProperty("302", ""+test);
我想在我的测试计划的结尾的JFrame 中显示所有这些变量,如下所示:
我的问题是我不知道如何在TestPlan之前和之后启动Beanshell脚本。
我希望在发送任何样本之前启动第一个脚本,只是将我的所有属性变量初始化为0(否则,它们保留最后一个TestPlan的值)。
并且,我希望第二个在测试计划完成后显示我的Frame以及所有变量 。 (目前它是一个JFrame,但它不会像这样。)
1)对于我的第一个脚本,我在测试计划的开头将Counter
(JMeter> Config Element> Counter)设置为0。
我用它来检查我的测试是否已经开始,而不是If Controller
:
我有一个带有props.set("302","0");
的预处理器外壳,其中“302”是我的属性,可以计算所有302个响应代码。
它正常工作,但我想知道是否有正确的方法来做到这一点。
2)然后,对于我的第二个脚本,我尝试在${JMeterThread.last_sample_ok}
中使用If Controller
,但它不能像我预期的那样工作。如果我把它放在我的样本之后,它会在所有OK断言之后开始,如果我把它放在测试计划的末尾,它就永远不会被调用。
在我的所有线程都停止后(即所有样本都已完成),如何运行我的beanshell脚本一次?
提前谢谢你,我希望你明白一切!
答案 0 :(得分:3)
JMeter SetUp thread group和TearDown thread group就是为了这个。
将您的beanshell组件添加到setUp线程组,以便在实际测试开始之前执行一些设置活动。类似地,tearDown线程组在测试执行完成后运行。