テストでは、期待される結果をアサートするために(using time.sleep(30)
)待つ必要がありますが、テストを実行するには多くのテストでスリープを追加するには時間がかかります。だから考えてみると、polling
です。つまり、特定のタイムアウトの結果を確認してから、引き上げるか、期待した結果が得られ、テストに合格します。今の私は、私はこのような機能の多くを作成する必要があり、この方法をなどPython:関数を使用せずにコードの一部を再試行する
def assert_results():
response = request.get(some_url)
assert response.status_code == 200
assert len(response.json()['results']) == 10
polling.poll(assert_results, timeout=30, step=3)
タイムアウトと再試行を自分のアサーションコードで関数を作成し、その後polling
にこのコールバックを渡して指定する必要がpollingパッケージを使用しています異なるテストが、私は、私は思っ
with some_python_cool_feature(timeout=60, retry_interval=3):
response = request.get(some_url)
assert response.status_code == 200
assert len(response.json()['results']) == 10
のように機能せずにこれらの行を再試行したいが、多分私達は、コンテキスト管理者と、そのようなことを行うことができますが、私はそれを行うことができませんでした。どんな助けでも大歓迎ですが、私はいくつかの関数を使った解決法を望んでおらず、いくつかのtry catchでそれを呼び出す必要はありません。
私はテストの中で待っていて、いくつかのコード行をやり直して、もう一度全体的なテストをやり直したくないです。 –
ネストされた関数を定義しておかないと、リトライデコレータがあり、探しているレスポンスを得るまで関連するコードだけを実行します。 – nir0s
もし私が100のテストをして30のユニークな型(コード行)があるなら、どこでもネストされた関数を作成しなければなりません。私はそのようなすべての解決策を完了しました。ありがとうBTW。 –