Edit:pytest-Kolben - nicht Applikation Endpunkte von Test-Client-Funktion zugreifen
Nach Sachen bewegen und die Umbenennung Dinge, ich bin diesen Beitrag Überarbeitung meiner aktuellen Ausgabe zu reflektieren.
Ich kann nicht auf die Endpunkte in den Dateien in meinem Ordner views
zugreifen. Ich dachte, sie in test_example.py
explizit zu importieren oder sie in __init__.py
bereits importiert zu haben, würde den Trick machen.
Hier ist der Fehler, wenn pytest
ausgeführt wird:
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?
Auch habe ich versucht, url_for('some_endpoint')
mit url_for('some_endpoint', _external=True)
Substitution - hatte keine Wirkung.
Hier ist meine Verzeichnisstruktur und die vereinfachten Inhalte der relevanten Dateien:
Verzeichnisstruktur
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"
Ich bin mit pytest-flask-0.10.0
, Python 3.4.3
und Flask 0.12.2