Advertisement
Guest User

Untitled

a guest
May 20th, 2019
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. from contextlib import contextmanager
  2. import tempfile
  3. from unittest import mock
  4.  
  5. import factory
  6. import pytest
  7.  
  8. from betterevidence import models
  9.  
  10.  
  11. @pytest.fixture(scope="session")
  12. def engine(app_settings):
  13. from betterevidence.models.meta import Base
  14. from betterevidence.models import get_engine
  15.  
  16. engine = get_engine(app_settings)
  17. Base.metadata.create_all(engine)
  18. return engine
  19.  
  20.  
  21. @pytest.fixture
  22. def connection(engine):
  23. connection = engine.connect()
  24. yield connection
  25. connection.close()
  26.  
  27.  
  28. @pytest.fixture
  29. def transaction(connection):
  30. transaction = connection.begin()
  31. yield transaction
  32. transaction.rollback()
  33.  
  34.  
  35. @pytest.fixture()
  36. def session(app_settings, connection, transaction):
  37. from sqlalchemy.orm import sessionmaker
  38.  
  39. Session = sessionmaker()
  40. session = Session(bind=connection)
  41. return session
  42.  
  43.  
  44. @pytest.fixture(scope="session")
  45. def app_settings():
  46. yield {"secret": "secret", "sqlalchemy.url": "sqlite://"}
  47.  
  48.  
  49. @pytest.fixture(scope="session")
  50. def root_app_inner(app_settings):
  51. from betterevidence import main
  52.  
  53. app = main({}, **app_settings)
  54. app.registry["dbsession_factory"].kw["bind"] = connection
  55. yield app
  56.  
  57.  
  58. @pytest.fixture
  59. def root_app(root_app_inner, connection):
  60. root_app_inner.registry["dbsession_factory"].kw["bind"] = connection
  61. yield root_app_inner
  62.  
  63.  
  64. @pytest.fixture
  65. def webtest(root_app, session):
  66. from webtest import TestApp
  67.  
  68. return TestApp(root_app)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement