編集:pytestフラスコは - テスト・クライアント機能から、アプリケーションのエンドポイントにアクセスすることはできません
周りのものを移動して、物事の名前を変更した後、私は私の現在の問題を反映するために、この記事を改訂しています。
views
フォルダ内のファイルのエンドポイントにアクセスできません。私はそれらを明示的にtest_example.py
にインポートすることを考えていたか、すでに__init__.py
にインポートされているのは、そのトリックを行うでしょう。 pytest
を実行するときに
はここでエラーになります。また
rv = self._partial_build(endpoint, values, method, append_unknown)
if rv is None:
> raise BuildError(endpoint, values, method, self)
E werkzeug.routing.BuildError: Could not build url for endpoint '/api/create_booth'. Did you mean 'static' instead?
、私はurl_for('some_endpoint', _external=True)
でurl_for('some_endpoint')
を代入しようとした - は効果がなかったです。
は、ここに私のディレクトリ構造だと、関連するファイルの簡素化内容:
ディレクトリ構造
server/
my_app/
__init__.py
views/
__init__.py
some_views.py
test/
__init__.py
conftest.py
test_example.py
__init__.py:
from flask import Flask
def create_app():
app = Flask(__name__)
return app
app = create_app()
from views.some_view import *
if __name__ == '__main__':
app.run(debug=True)
conftest.py
import pytest
from my_app import create_app
@pytest.fixture
def app():
app = create_app()
return app
test_example.py
from flask import url_for
from my_app.views.some_views import some_endpoint
def test_some_endpoint(client):
assert client.post(url_for('some_endpoint'),
data=json.dumps(dict(some_attr='some_value')),
content_type='application/json').status_code == 200
some_views.py
from my_app import app
@app.route('/api/some_endpoint/', methods=['POST'])
def some_endpoint():
return "success"
私はヨーヨーだと思うpytest-flask-0.10.0
、Python 3.4.3
、およびFlask 0.12.2