Locust性能-零基础入门系列(11)-event hooks使用

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

其次以上的时间钩子,也可以用以下方式来实现(即不使用标签,而使用变量赋值的形式)
Locust性能-零基础入门系列(11)-event hooks使用

猜你喜欢

转载自blog.51cto.com/13734261/2571560