ローカストパフォーマンス-ゼロファンデーション紹介シリーズ(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ステートメントの出力/戻りオブジェクトを上記の場合の「asresponse」などの別の参照変数に割り当てます。

実際、withステートメントを実現するには、基礎となるメソッドenter」および「exit」を実現する必要があります。つまり、withステートメントの実行が開始されたときにenterメソッド呼び出され、実行が終了した後にexitメソッドが呼び出されます。これはfinally句の役割にいくぶん似ています。

個人的には、このモードを使用して実際のプロジェクトでリクエストの送信と検証を管理することをお勧めします。まず、コードを合理化できますが、テストコードの方が堅牢です。

ローカストパフォーマンス-ゼロファンデーション紹介シリーズ(13)-コンテキストマネージャーアプリケーション

おすすめ

転載: blog.51cto.com/13734261/2571566