Skip to content

Instantly share code, notes, and snippets.

@kwatch
Created August 23, 2012 01:43
Show Gist options
  • Save kwatch/3431164 to your computer and use it in GitHub Desktop.
Save kwatch/3431164 to your computer and use it in GitHub Desktop.
pyramid.threadlocal.get_current_registry().settingsがうまくとれなくなるサンプル
# -*- coding: utf-8 -*-
"""
pyramid.testing.tearDown()を一度でも実行すると、
pyramid.threadlocal.get_current_registry().settingsが
うまくとってこれなくなることを示すサンプル
"""
import sys
import unittest
import pyramid.threadlocal
import pyramid.testing
import pyramid.paster
pyramid.paster.bootstrap('development.ini')
DSN = pyramid.threadlocal.get_current_registry().settings['sqlalchemy.url']
sys.stderr.write("\033[0;31m*** debug: DSN=%r\033[0m\n" % (DSN, ))
import sqlalchemy
import sqlahelper
DBSession = sqlahelper.get_session()
Base = sqlahelper.get_base()
engine = sqlalchemy.create_engine(DSN)
#Base.metadata.create_all(engine)
DBSession.configure(bind=engine)
class Example_TC(unittest.TestCase):
def setUp(self):
self.db_sess = DBSession
def tearDown(self):
pyramid.testing.tearDown()
def test_1(self):
"""1回目は get_current_registry().settings がうまくとれている"""
d = pyramid.threadlocal.get_current_registry().settings
sys.stderr.write("\033[0;31m*** debug: d=%r\033[0m\n" % (d, ))
self.assertNotEqual(None, d)
def test_2(self):
"""しかし2回目はpyramid.testing.tearDown()が呼ばれたあとなのでうまくとれない?"""
d = pyramid.threadlocal.get_current_registry().settings
sys.stderr.write("\033[0;31m*** debug: d=%r\033[0m\n" % (d, ))
self.assertNotEqual(None, d)
if __name__ == '__main__':
unittest.main()
@Mistat
Copy link

Mistat commented Aug 23, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment