locust(三) - setup和teardown

setup/teardown

setupteardown用于初始化/清理一个测试类所需要/所产生的环境.

它们是怎么被执行,又会被执行多少次呢? 先看locust源码:

locust/core.py, Line: 282

if hasattr(self, "setup") and self._setup_has_run is False:
    self._set_setup_flag()
    self.setup()
if hasattr(self, "teardown") and self._teardown_is_set is False:
    self._set_teardown_flag()
    events.quitting += self.teardown

从源码中可以看出, setupteardown在执行之后会改变标志, 且执行时需要判断标志, 所以setup只会在task执行前执行一次, 而teardown只会在该类中所有task执行完毕后执行一次.

Locust类中也有setupteardown方法,用法与TaskSet类中的基本一致,因此不做赘述。

on_start/on_stop

一个TaskSet类也可以声明一个on_start或者on_stop方法。on_start方法在locust启动一个虚拟用户执行 TaskSet类时被调用, 相反的,on_stopTaskSet停止时被调用。

执行顺序

由于Locust类和TaskSet类有多种setup/teardown相互依赖,下面是这些类的执行顺序,方便理解:

  1. Locust setup
  2. TaskSet setup
  3. TaskSet on_start
  4. TaskSet tasks…
  5. TaskSet on_stop
  6. TaskSet teardown
  7. Locust teardown

总的来说,setupteardown就是互补的关系,因此执行顺序也是先执行setup/on_start再执行teardown/on_stop

翻译自

locust document - writing a locustfile

你可能感兴趣的:(locust(三) - setup和teardown)