Browse Source

changed from unittest to py.test

rework
Holger Frey 7 years ago
parent
commit
8b1441dd34
  1. 3
      Makefile
  2. 65
      ordr/tests.py
  3. 51
      ordr/tests/__init__.py
  4. 3
      pytest.ini
  5. 2
      setup.cfg

3
Makefile

@ -55,9 +55,6 @@ lint: ## check style with flake8
test: ## run tests quickly with the default Python test: ## run tests quickly with the default Python
py.test py.test
test-all: ## run tests on every Python version with tox
tox
coverage: ## check code coverage quickly with the default Python coverage: ## check code coverage quickly with the default Python
coverage run --source ordr -m pytest coverage run --source ordr -m pytest
coverage report -m coverage report -m

65
ordr/tests.py

@ -1,65 +0,0 @@
import unittest
import transaction
from pyramid import testing
def dummy_request(dbsession):
return testing.DummyRequest(dbsession=dbsession)
class BaseTest(unittest.TestCase):
def setUp(self):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
self.config.include('.models')
settings = self.config.get_settings()
from .models import (
get_engine,
get_session_factory,
get_tm_session,
)
self.engine = get_engine(settings)
session_factory = get_session_factory(self.engine)
self.session = get_tm_session(session_factory, transaction.manager)
def init_database(self):
from .models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
from .models.meta import Base
testing.tearDown()
transaction.abort()
Base.metadata.drop_all(self.engine)
class TestMyViewSuccessCondition(BaseTest):
def setUp(self):
super(TestMyViewSuccessCondition, self).setUp()
self.init_database()
from .models import MyModel
model = MyModel(name='one', value=55)
self.session.add(model)
def test_passing_view(self):
from .views.default import my_view
info = my_view(None, dummy_request(self.session))
self.assertEqual(info['one'].name, 'one')
self.assertEqual(info['project'], 'Ordr')
class TestMyViewFailureCondition(BaseTest):
def test_failing_view(self):
from .views.default import my_view
info = my_view(None, dummy_request(self.session))
self.assertEqual(info.status_int, 500)

51
ordr/tests/__init__.py

@ -0,0 +1,51 @@
import pytest
import transaction
from pyramid import testing
APP_SETTINGS = {
'sqlalchemy.url': 'sqlite:///:memory:',
}
@pytest.fixture(scope='session')
def app_config():
''' fixture for tests requiring a pyramid.testing setup '''
with testing.testConfig(settings=APP_SETTINGS) as config:
config.include('pyramid_jinja2')
config.include('pyramid_listing')
yield config
@pytest.fixture(scope='session')
def dbsession(app_config):
''' fixture for testing with database connection '''
from ordr.models.meta import Base
from ordr.models import (
get_engine,
get_session_factory,
get_tm_session
)
settings = app_config.get_settings()
engine = get_engine(settings)
session_factory = get_session_factory(engine)
session = get_tm_session(session_factory, transaction.manager)
Base.metadata.create_all(engine)
yield session
transaction.abort()
Base.metadata.drop_all(engine)
def test_passing_view(dbsession):
from ordr.views.default import my_view
from ordr.models import MyModel
model = MyModel(name='one', value=55)
dbsession.add(model)
info = my_view(None, testing.DummyRequest(dbsession=dbsession))
assert info['one'].name == 'one'
assert info['project'] == 'Ordr'

3
pytest.ini

@ -1,3 +0,0 @@
[pytest]
testpaths = ordr
python_files = *.py

2
setup.cfg

@ -23,5 +23,7 @@ hang_closing = True
test = pytest test = pytest
[tool:pytest] [tool:pytest]
testpaths = ordr
python_files = *.py
collect_ignore = ['setup.py'] collect_ignore = ['setup.py']