Ich habe eine einfache Flasche App, ich möchte es mit Pytest testen.Test Kolben App mit Pytest kann nicht finden, Client Client
mein conftest.py
:
@pytest.fixture
def app(self):
app = create_app(TestingConfig)
return app
mein test_view.py
:
class TestMainView:
def test_ping(self, client):
res = client.get(url_for('main.index'))
assert res.status_code == 200
wenn ich laufe der Test die Verwendung pytest
es einen Fehler werfen sagen:
fixture 'client' not found
> available fixtures: app, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_xml_property, recwarn, tmpdir, tmpdir_factory
> use 'pytest --fixtures [testpath]' for help on them.
Ich habe eine andere Testdatei, in der Ich teste Standardkonfigurationen und es übergibt:
class TestTestingClass(object):
app = create_app(TestingConfig)
def test_app_is_test(self):
''' test the test enviroment is set okay and works'''
assert self.app.config['SECRET_KEY'] == 'something hard'
assert self.app.config['DEBUG'] == True
assert self.app.config['TESTING'] == True
assert current_app is not None
assert self.app.config['SQLALCHEMY_DATABASE_URI'] == 'sqlite:////tmp/testing.db'
bearbeiten: konnte ich einen leeren Test durch den Wechsel passieren:
conftest.py
: zu
@pytest.fixture
def app():
app = create_app(TestingConfig)
return app
@pytest.fixture
def client(app):
return app.test_client()
und meine Testdatei:
def test_index(client):
assert True
aber, ich kann immer noch nicht dieübergebenwenn es:
def test_index(client):
assert client.get(url_for('main.index')).status_code == 200
aber dieses Mal, ich bin immer ein Fehler, dass die besagt, sagt:
RuntimeError: Attempted to generate a URL without the application context being pushed. This has to be executed when application context is available.
Client-Gerät war für die zweite Art von Test und Implementierung. Was Sie sagen, ist die erste Art von Code, die ich zur Verfügung gestellt habe, und das hat nicht funktioniert. Ich experimentiere noch und kann die Lösung basierend auf der genauen Sache ändern, die ich getan habe, um es zu beheben. – senaps