Flaskアプリケーション用のテストをいくつか書いています。テストケース内からurl_forを呼び出して生成されたものとtest_clientレスポンスのURLが一致しない問題が発生しています。例えば、私は私のテンプレートでは、次のしている:テストでurl_forを使用する
<li><a href="#" onClick="requestReport('{{ url_for('report') }}', '{{ session['email'] }}');">Report</a></li>
test_clientからの応答としてこれをレンダリング:
<li><a href="#" onClick="requestReport('/api/report', '[email protected]');">Report</a></li>
私は確かにこのURLがページに表示させるためにチェックするテストケースを持っています一定の条件の下で:
self.client = self.app.test_client(use_cookies=True)
with self.app.app_context():
page = self.client.get(url_for("index"), follow_redirects=True).data.decode()
assert url_for("report") in page
問題は、テンプレート内なurl_for呼び出しがより異なる出力を生成しているため、このテストは、URLがページに表示された場合でも、失敗するということですテストケースのurl_forコール。私はテストケースコードからなurl_for(「報告書」)を印刷する場合は、私が手:私は、SERVER_NAMEが設定されていない場合ので:
http://localhost:5000/api/report
は、私が「5000 localhost」をに設定app.configをでSERVER_NAMEキーを持っていますテストケースのコードは、このエラーがスローされます。
明らかRuntimeError: Application was not able to create a URL adapter for request independent URL generation. You might be able to fix this by setting the SERVER_NAME config variable.
、私は私のテストケースコードでURLをハードコーディングすることによってこの問題を回避できますが、私は私のURLへの将来的な変更がないようになurl_forを使用することを好むだろうテストコードを破る。
私は、応答で生成されたものとまだ一致しない不正な形式のURLを生成するだけでなく、SERVER_NAMEとしていくつかの異なる文字列を試しました。
URLをハードコードする以外にこれを修正する方法はありますか?