暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Locust性能-零基础入门系列(11)

TimTest 2020-11-27
289
Locust 与生俱来有很多事件钩子(event hooks)可以使用。除去之前文章提到的,还有一些我们可以使用。本来常规来说,这些事件是在Locust环境(Environment)实例中,但是你懂的,在locust file刚被加载的时,环境实例还没有被创建 。那么在locust file中,这些事件的对象也可以直接访问,只需要引入locust.events变量即可。当事件被触发的时候,那么事件的钩子方法就会被调用,你可以理解为一种回调方法。现结合具体案例进行讲解。
    from locust import events,HttpUser,between,task




    @events.request_success.add_listener
    def process_success_requests(request_type,name,response_time,response_length,**kwargs):
        print('success Type: {}, Name: {}, ResposeTime: {}, Length: {}'.format(request_type,name,response_time,response_length))


    class MyUser(HttpUser):
    wait_time = between(2,5)


    @task
    def open_index_page(self):
    self.client.get("http://www.myweb.com:8000/admin/login/?next=/admin/")

    以上案例,简单起见只实现了处理请求成功的事件钩子,实现当请求成功后,会打印出请求类型,比如GET,POST等等;请求的URL;请求响应时间和请求返回size。locust file执行之后的控制台输出为:

       Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
      [2020-11-27 08:59:30,215] jasondeMacBook-Pro.local/INFO/locust.runners: All users hatched: MyUser: 1 (0 already running)
      success Type: GET, Name: admin/login/?next=/admin/, ResposeTime: 127.31385231018066, Length: 94929
      success Type: GET, Name: admin/login/?next=/admin/, ResposeTime: 108.82806777954102, Length: 94929
      success Type: GET, Name: admin/login/?next=/admin/, ResposeTime: 103.49106788635254, Length: 94929
      success Type: GET, Name: /admin/login/?next=/admin/, ResposeTime: 119.99106407165527, Length: 94929
      success Type: GET, Name: /admin/login/?next=/admin/, ResposeTime: 98.76322746276855, Length: 94929
      success Type: GET, Name: /admin/login/?next=/admin/, ResposeTime: 104.08234596252441, Length: 94929
      success Type: GET, Name: /admin/login/?next=/admin/, ResposeTime: 115.71598052978516, Length: 94929



      其次以上的时间钩子,也可以用以下方式来实现(即不使用标签,而使用变量赋值的形式)

      文章转载自TimTest,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论