Как я тестирую django схему базы данных?

Вы можете использовать Заменить и старый трюк, чтобы построить выражение в вашем запросе:

NoCounts: (Len([Field1] & [Field2] & … & [FieldN]) - Len(Replace([Field1] & [Field2] & … & [FieldN]), "No", ""))) / Len("No")
6
задан 4 revs, 4 users 100% 18 October 2008 в 20:45
поделиться

1 ответ

То, что мы сделали, было переопределить значение по умолчанию test_runner так, чтобы оно не создавало новую базу данных для тестирования против. Таким образом, это запускает тест против того, на что похожа наша текущая локальная база данных. Но будьте очень осторожны при использовании этого метода, потому что любые изменения в данных, которые Вы делаете в своих тестах, будут постоянными. Я удостоверился, что все наши тесты восстанавливают, любой возвращается к их исходному состоянию, и сохраните нашу нетронутую версию нашей базы данных по серверу и сохраненный.

Таким образом, чтобы сделать это необходимо скопировать run_test метод от django.test.simple до местоположения в проекте - я поместил мой в myproject/test/test_runner.py

Затем внесите следующие изменения в тот метод:

// change
old_name = settings.DATABASE_NAME
from django.db import connection
connection.creation.create_test_db(verbosity, autoclobber=not interactive)
result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
connection.creation.destroy_test_db(old_name, verbosity)

// to:
result = unittest.TextTestRunner(verbosity=verbosity).run(suite)

Удостоверьтесь, что сделали, весь необходимый импорт наверху и затем в Вашем файле настроек устанавливает установку:

TEST_RUNNER = 'myproject.test.test_runner.run_tests'

Теперь, когда Вы запускаете тест./manage.py, Django запустит тесты против текущего состояния Вашей базы данных вместо того, чтобы создать новую версию на основе Ваших определений текущей модели.

Другая вещь, которую можно сделать, создают копию базы данных локально и затем делают регистрацию нового run_test () метод как это:

if settings.DATABASE_NAME != 'my_test_db': 
    sys.exit("You cannot run tests using the %s database. Please switch DATABASE_NAME to my_test_db in settings.py" % settings.DATABASE_NAME) 

Тем путем там не является никакая опасность запустить тесты против Вашей основной базы данных.

9
ответ дан 10 December 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: