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)-上下文管理器應用

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