locust实例

一、示例代码:

from locust import HttpLocust, TaskSetdef login(i): i.client.post("/login", {"username": "ellen_key", "password": "education"})def logout(i): i.client.post("/logout", {"username": "ellen_key", "password": "education"})def index(i): i.client.get("/")def profile(i): i.client.get("/profile")class UserBehavior(TaskSet):# 用户行为类 def on_start(self): login(self)def on_stop(self): logout(self)tasks = {index: 2, profile: 1}# 定义任务事件的请求比例class WebsiteUser(HttpLocust):# 蝗虫类 task_set = UserBehavior min_wait = 3000 max_wait = 6000

这里我们定义了许多Locust任务,它们是带有一个参数(Locust类实例)的普通Python callables 。这些任务收集在tasks属性的TaskSet类下 。然后我们有一个代表用户的 类,我们在其中定义模拟用户在执行任务之间应该等待多长时间,以及哪个 类应该定义用户的“行为”。 类可以嵌套。HttpLocustTaskSetTaskSet
的HttpLocust类从继承 Locust的类,并把它添加一个客户端属性,它是的一个实例 HttpSession,可用于使HTTP请求。
另一种:使用@task装饰器,声明任务的方法
fromlocustimport HttpLocust, TaskSet, task classUserBehavior(TaskSet): defon_start(self): """ on_start is called when a Locust start before any task is scheduled """ self.login() defon_stop(self): """ on_stop is called when the TaskSet is stopping """ self.logout() deflogin(self): self.client.post("/login", {"username":"ellen_key", "password":"education"}) deflogout(self): self.client.post("/logout", {"username":"ellen_key", "password":"education"}) @task(2) defindex(self): self.client.get("/") @task(1) defprofile(self): self.client.get("/profile") classWebsiteUser(HttpLocust): task_set = UserBehavior min_wait =5000 max_wait =9000

在Locust类(以及HttpLocust 因为它是一个子类),也可以让一个在指定最小和最大等待时间毫秒,每个模拟用户之间的任务执行(min_wait和MAX_WAIT)以及其他用户的行为。默认情况下,时间是在min_wait和max_wait之间统一随机选择的,但是可以通过将wait_function设置为任意函数来使用任何用户定义的时间分布。例如,对于指数分布的等待时间平均为1秒:
importrandomclassWebsiteUser(HttpLocust): task_set = UserBehaviour wait_function =lambdaself: random.expovariate(1)*1000

二、启动蝗虫
要使用上面的Locust文件运行Locust,
1. locust文件当前目录运行:
$ locust --host=http://example.com
2. 其它目录下运行,使用-f以下命令指定:
$ locust -f locust_files/my_locust_file.py --host=http://example.com
3. 运行在同一台机器的多个进程中的locust:
  1. 首先,通过指定--master来启动主进程 :
$ locust -f locust_files/my_locust_file.py --master --host=http://example.com
  1. 其次,启动任意数量的从属进程:
$ locust -f locust_files/my_locust_file.py --slave --host=http://example.com
4. 运行分布在多台机器上的Locust:
必须在启动从机时指定主机主机(在运行分布在单台机器上的Locust时不需要这样做,因为主机主机默认为127.0.0.1):
$ locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 --host=http://example.com
注意
要查看所有可用选项类型: locust --help
打开Locust的Web界面
使用上述命令行之一启动Locust后,应打开浏览器并将其指向http://127.0.0.1:8089(如果您在本地运行Locust)。界面响应如下:

locust实例
文章图片
【locust实例】

    推荐阅读