Im書き込みユニットは、PythonでFlaskで書かれたAPIをテストします。具体的には、ルートのエラー処理が適切に機能するようにテストしたいので、欠落しているパラメータがあるURLを意図的に作成したいと考えています。私はハードコーディングを避けるために、url_for()を使用していますが、パラメータが不足していることを許可していないので、不正なURLを構築する方法はありますか?ユニットテストで意図的にurl_for()で不正なURLを構築するには?
0
A
答えて
2
url_for
になると、2種類のURLが生成されます。
@app.route('/favorite/color/<color>')
def favorite_color(color):
return color[::-1]
のような名前のルートがある場合、その後、URLパラメータが必要です:
url_for('favorite_color')
BuildError: Could not build url for endpoint 'favorite_color'. Did you forget to specify values ['color']?
しかし、ルート自体に存在していない任意のパラメータは、単にクエリ文字列パラメータに変換されます:あなたが欠落しているパラメータを使用してURLを尋ねるとき
print(url_for('favorite_color', color='blue', no='yellooooowwww!'))
/favorite/color/blue?no=yellooooowwww%21
だから、何を求めていることはのURL THAですtには経路がありません。フラスコは存在するエンドポイントのパラメータを作成しようとしているため、そのURLを作成することはできません。
あなたができることは、範囲外のパラメータ値を使用することです。
url_for('favorite_color', color='toaster')
トースターは実際の色ではないため、404
を返す必要があります。パラメータがない場合は、別のコンテキストでも意味をなさない可能性があるので、そのことを考慮する必要があります。 本当に欠けているパラメータが必要な場合は、実際に実行したいのはクエリーストリングの引数を使用することです。しかし、サーバーに存在しないURLがサーバーに実際に存在しないことを確認して死んでしまう場合は、次のようにしてください:
url_for('favorite_color', color='fnord').replace('/fnord', '')
+0
範囲外の値を使用してしまったと思います。 'url_for( 'api.status'、id = '')'不正なリクエスト処理をテストします。説明ありがとう。 – Eno
関連する問題
- 1. FlaskでURLを動的に構築するための最良の方法url_for
- 2. Ruby on Railsで任意のURLを段階的に構築する
- 3. URLを動的に構築する
- 4. url_for()でFlaskで動的URLを作成
- 5. url_forで無効なURL
- 6. 意図的に無意味なMIMEタイプ
- 7. 意図的にオーバーフィットニューラルネットワーク
- 8. ArcObjectで一時的なFeatureClassを構築するには?
- 9. アプリを構築するにはライブラリが不可欠ですか?
- 10. Pythonでマイクロブログサイトを構築するには?任意の提案
- 11. なぜboost :: checked_deleteは "意図的に複雑"ですか?
- 12. 意図的にELBに接続されたインスタンスを不健全にする
- 13. リクエストパラメータをJavaで構築するURL
- 14. 意図的にハイフンを無視する
- 15. 不正なURLを
- 16. Where ExpressionをEntity Frameworkで動的に構築するには?
- 17. URI/URLのRFC2396と一致する正規表現を構築するには?
- 18. URLキューを構築する
- 19. Dockerコンテナを構築中にPython3で不思議なUnicodeDecodeError
- 20. すべての意図的なエラーを素早く修正
- 21. エラー:不正なアプリケーション(機能しない構築)
- 22. ツールや技術の使用を意図していない方法で移行するケースを構築する
- 23. ASP.Netで動的にメニューを構築
- 24. ブートストラップでインタラクティブな意思決定ツリーを構築する方法
- 25. ユニットテストのための不正なパラメータクラスを作成する抽象的な方法
- 26. 不正な構文は、VBA
- 27. クロスドメインリダイレクトを意図的に許可しない - Struts2 WebアプリケーションのURLリダイレクトの問題
- 28. 意図的にNaNを返します
- 29. 動的にRIBBONを構築する:e.OriginalSourceはもはやタイプではない:RibbonButton
- 30. Cで静的ライブラリを構築する
= parameters'または '/ these/parameters/42/name'? –
URLにパラメータを含むGETです(例:/status/ – Eno