locust(三) - setup和teardown
2018-05-25 本文已影响6人
严北
setup/teardown
setup和teardown用于初始化/清理一个测试类所需要/所产生的环境.
它们是怎么被执行,又会被执行多少次呢? 先看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
从源码中可以看出, setup和teardown在执行之后会改变标志, 且执行时需要判断标志, 所以setup只会在task执行前执行一次, 而teardown只会在该类中所有task执行完毕后执行一次.
Locust类中也有setup和teardown方法,用法与TaskSet类中的基本一致,因此不做赘述。
on_start/on_stop
一个TaskSet类也可以声明一个on_start或者on_stop方法。on_start方法在locust启动一个虚拟用户执行 TaskSet类时被调用, 相反的,on_stop在TaskSet停止时被调用。
执行顺序
由于Locust类和TaskSet类有多种setup/teardown相互依赖,下面是这些类的执行顺序,方便理解:
- Locust setup
- TaskSet setup
- TaskSet on_start
- TaskSet tasks…
- TaskSet on_stop
- TaskSet teardown
- Locust teardown
总的来说,setup和teardown就是互补的关系,因此执行顺序也是先执行setup/on_start再执行teardown/on_stop。