44 lines
1018 B
Python
44 lines
1018 B
Python
import os
|
|
import pathlib
|
|
import pytest
|
|
|
|
# TODO - this seems to be a "magic path" which makes fixtures available. Learn more about it by reading
|
|
# https://stackoverflow.com/questions/34466027/what-is-conftest-py-for-in-pytest
|
|
|
|
from app import create_app
|
|
|
|
# https://flask.palletsprojects.com/en/2.3.x/testing/
|
|
|
|
|
|
@pytest.fixture()
|
|
def app_fixture():
|
|
# Start afresh!
|
|
test_database_name = "testing-db.sqlite"
|
|
database_location = pathlib.Path("instance").joinpath(test_database_name)
|
|
if database_location.exists():
|
|
database_location.unlink()
|
|
|
|
os.environ["DATABASE_URI"] = f"sqlite:///{test_database_name}"
|
|
os.environ["SECRET_KEY"] = "testing-secret-key"
|
|
|
|
app = create_app()
|
|
# app.config.update({
|
|
# 'TESTING': True
|
|
# })
|
|
|
|
# other setup can go here
|
|
|
|
yield app
|
|
|
|
# clean up / reset resources here
|
|
|
|
|
|
@pytest.fixture()
|
|
def client(app_fixture):
|
|
return app_fixture.test_client()
|
|
|
|
|
|
@pytest.fixture()
|
|
def runner(app_fixture):
|
|
return app_fixture.test_cli_runner()
|