我正在尝试了解蝗虫测试中的流程。我已经设置了这个非常简单的任务集和用户:
from locust import TaskSet, HttpLocust, task
class BlazeDemoTaskSet(TaskSet):
def setup(self):
print("hello from taskset setup")
def teardown(self):
print("hello from taskset teardown")
def on_start(self):
print("hello from taskset on_start")
def on_stop(self):
print("hello from taskset on_stop")
@task
def reserve_task(self):
post_response = self.client.post(
url="/reserve.php",
params={"toPort":"Buenos Aries", "fromPort":"Paris"})
class BlazeDemoUser(HttpLocust):
task_set = BlazeDemoTaskSet
min_wait = 500
max_wait = 1500
host = "http://www.blazedemo.com"
def setup(self):
print("hello from httplocust setup")
def teardown(self):
print("hello from httplocust teardown")
我运行它:
locust -f tests/blazedemo.py --no-web -c 1 -r 1 -n 2
我没有看到HttpLocust
setup
或teardown
方法被执行,我没有看到TaskSet
setup
,{{1正在执行的方法或on_stop
方法。唯一可以运行的方法是teardown
和on_start
According to the docs应该运行所有这些方法。每次运行设置和拆卸一次,并为每个启动的用户设置on_start和on_stop。
以下是Locust的整个输出:
reserve_task
我错过了什么?提前谢谢!
答案 0 :(得分:4)
根据文档,应该运行所有这些方法。
此功能尚未在PyPI的最新稳定版本(目前为0.8.1)中提供。 setup / terdown支持最近已合并,将在0.9版本中发布。现在,您必须从locustio Git repo安装master分支才能使用这些。
运行:
pip install -e git+https://github.com/locustio/locust.git@master#egg=locustio
或克隆git repo,然后运行:
pip install -e .
答案 1 :(得分:0)
Locust.setup
,Locust.teardown
,TaskSet.setup
和TaskSet.teardown
挂钩在1.0版中已被删除。可以在docs上找到说明。
test_start
和test_stop
事件可用于在> = 1.0版本中实现相同的目的
来自文档:
from locust import events
@events.test_start.add_listener
def on_test_start(**kw):
print("test is starting")
@events.test_stop.add_listener
def on_test_start(**kw):
print("test is stopping")