locust里面请求是基于requests的,每个方法请求和requests差不多,请求参数、方法、响应对象和requests一样的使用,之前学过requests库的,这里就非常简单了

  • requests.get 对应client.get
  • requests.post 对应client.post

    1. # 保存为demo.py
    2. # coding:utf-8
    3. from locust import HttpLocust,TaskSet,task
    4. class BlogDemo(TaskSet):
    5. '''用户行为:打开我的博客首页demo'''
    6. @task(1)
    7. def open_blog(self):
    8. # 定义requests的请求头
    9. header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"}
    10. r = self.client.get("/yoyoketang", headers=header, verify=False)
    11. print(r.status_code)
    12. assert r.status_code == 200
    13. class websitUser(HttpLocust):
    14. task_set = BlogDemo
    15. min_wait = 3000 # 单位毫秒
    16. max_wait = 6000 # 单位毫秒
    17. if __name__ == "__main__":
    18. import os
    19. os.system("locust -f demo.py --host=https://www.cnblogs.com")

    image.gif
    代码注解:
    新建一个类BlogDemo(TaskSet),继承TaskSet,该类下面写一些准备请求的行为(访问的接口)
    里面的self.client调用get和post方法,跟requests是一样的
    @task装饰该方法表示为用户行为。括号里面参数表示该行为挑选执行的权重,数值越大,执行频率越高,不设置默认是1
    WebsiteUser()类用于设置性能测试。
    task_set :指向一个定义了的用户行为类。
    min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
    max_wait :用户执行任务之间等待时间的上界,单位:毫秒。

    启动locust

    启动locust可以直接在pycharm里面执行上面的代码,运行后编辑器出现两行
    [2018-09-12 23:23:57,500] DESKTOP-HJ487C8/INFO/locust.main: Starting web monitor at *:8089
    [2018-09-12 23:23:57,500] DESKTOP-HJ487C8/INFO/locust.main: Starting Locust 0.9.0
    也可以通过cmd执行

    $ locust -f demo.py —host=https://www.cnblogs.com

  • -f 参数是指定运行的脚本

  • —host是指定运行项目的host地址,这里用的https://www.cnblogs.com,代码里面get访问的是”/yoyoketang”,拼接起来就是完整地址了

8089是该服务启动的端口号。由于是在本机上搭建的locust,所以可以直接在浏览器输入http://localhost:8089/打开,
如果是在其它机器上搭建的locust服务,那就通过http://其它机器IP:8089/打开