Я хотел бы иметь модуль Python, содержащий некоторые модульные тесты, которые я могу передать hg bisect --command
.
Модульные тесты тестируют некоторые функциональные возможности приложения django, но я не думаю, что смогу использовать hg bisect --command manage.py test mytestapp
, потому что mytestapp
должно быть включено в settings.py, а изменения в settings.py закрывается, когда hg bisect
обновляет рабочий каталог.
Поэтому я хотел бы знать, является ли что-то вроде следующего лучшим способом:
import functools, os, sys, unittest
sys.path.append(path_to_myproject)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
def with_test_db(func):
"""Decorator to setup and teardown test db."""
@functools.wraps
def wrapper(*args, **kwargs):
try:
# Set up temporary django db
func(*args, **kwargs)
finally:
# Tear down temporary django db
class TestCase(unittest.TestCase):
@with_test_db
def test(self):
# Do some tests using the temporary django db
self.fail('Mark this revision as bad.')
if '__main__' == __name__:
unittest.main()
Буду очень признателен, если вы посоветуете либо:
- Если есть более простой способ, возможно, создание подкласса
django.test.TestCase
, но не редактирование settings.py или, если нет,
- Какими должны быть строчки, в которых написано "Установить временную базу данных django" и "Снять временную базу данных django"?