1

Jmeter 有没有办法在线程关闭之前执行示例?

例如,我有一个将数据插入数据库的测试计划,并且在连接上禁用了自动提交。每个线程产生自己的数据库连接。计划按计划运行(即我不知道样本数),我想在测试结束时提交所有插入的行。有没有办法做到这一点?

4

3 回答 3

0

尝试基于某些 if 条件 wrt duration 或 iterationnum 运行提交示例例如:如果您应该运行 100 次迭代:具有条件的 If 控制器 - __groovy(${__iterationNum}==100)

应该有帮助。

于 2020-07-27T02:14:16.723 回答
0

好的,这可能不是最理想的,但可能是可行的

  • 在 onceonly 控制器内的 JSRSampler 中添加以下代码

def 场景开始时间 = System.currentTimeMillis(); def timeLimit= ctx.getThreadGroup().getDuration()-10; //执行提交采样器的时间限制 vars.put("scenarioStartTime",scenarioStartTime.toString()); vars.put("timeLimit",timeLimit.toString());

  • 现在,在您的数据库插入采样器之后,在 if 控制器中添加以下条件并添加提交采样器。

${__groovy(System.currentTimeMillis()-Long.valueOf(vars.get("scenarioStartTime"))>=Long.valueOf(vars.get("timeLimit"))*1000)}

这种情况应该让您在测试持续时间结束之前执行提交采样器。

于 2020-07-29T07:37:15.823 回答
0

最简单的方法是为执行清理操作而设计的tearDown 线程组。


更难的方法是使用以下Groovy代码添加一个具有 1 个线程和 1 个迭代的单独线程组和 1 个JSR223 采样器:

class ShutdownListener implements Runnable {

   @Override
   public void run() {
       //your code which needs to be executed before test ends
   }     
}

new ShutdownListener().run()
于 2019-02-04T12:09:09.260 回答