Nose test runner supports setup_package()and methods teardown_package(). Here is an excerpt from the documents:
Test packages
Noseallows you to group tests into test packages. This allows packet level adjustment; for example, if you need to create a database test or other data for your tests, you can create it in the package installation and delete it when you break the package once per test run, instead of creating and breaking it once on the test module or test example.
, / init.py . setup, setup_package, setUp setUpPackage; teardown, teardown_package, tearDown tearDownPackage. .
setup_package(), :
def _create_database():
template_engine = sa.create_engine("postgres://postgres@/postgres", echo=False)
conn = template_engine.connect()
conn = conn.execution_options(autocommit=False)
conn.execute("ROLLBACK")
try:
conn.execute("DROP DATABASE %s" % DB_NAME)
except sa.exc.ProgrammingError as e:
conn.execute("ROLLBACK")
except sa.exc.OperationalError as e:
conn.execute("ROLLBACK")
conn.execute("CREATE DATABASE %s" % DB_NAME)
conn.close()
template_engine.dispose()
def setup_package():
_create_database()
engine = sa.create_engine("postgres://postgres@/%s" % DB_NAME, echo=False)
session = sa.orm.scoped_session(sa.orm.sessionmaker())
session.configure(bind=engine)
Base.metadata.bind = engine
Base.metadata.create_all()
def teardown_package():
, , , , tearDown:
class BaseTest(unittest.TestCase):
def setUp(self):
self.tearDown()
self.config = testing.setUp()
def tearDown(self):
testing.tearDown()
session.expunge_all()
session.rollback()
setUp, tearDown - , , .