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
。