Locust性能-零基础入门系列(13)-上下文管理器应用

本文主要内容是关于在Locust模拟场景时对于上下文管理器的应用。可能有同学对这个不是特别理解,或者说不好理解。我们先以一个简单的例子来说明上下文管理器的应用。

from locust import HttpUser, task, between

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

    @task
    def index(self):
        with self.client.get("/admin/login/?next=/admin/",catch_response=True) as response:
            if response.status_code != 200:
                response.failure("Threre maybe some issues in the requests.")
            elif response.elapsed.total_seconds() > 5:
                response.failure("Request took too long")

从以上Locust脚本中,可以发现with代码块作为上下文管理器的载体。with语句的目的就是为了简化一些代码流程,在这里它是为了简化try/finally流程。但是利用with语句比利用try/finally代码块要简洁很多。
且一般with语句后会跟as子句为了将with语句产出/返回对象赋值给另外一个引用变量,比如以上案例中的“as response” 等。

其实with语句的实现是需要实现"enter"和"exit"底层方法的。即,with语句开始运行时会调用enter方法,而运行结束后会调用exit方法,这个有些类似finally子句的角色。

个人建议在实际项目中还是运用这种模式来管理请求的发送和验证等操作,一是可以精简代码,而是测试代码鲁棒性更好些。

Locust性能-零基础入门系列(13)-上下文管理器应用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章