Yaptıklarımız bunun karşı test etmek için yeni veritabanı oluşturmak olmaz ki varsayılan test_runner geçersiz oldu. Bu şekilde, mevcut yerel veritabanımızın neye benzediğine bakılmaksızın testi çalıştırır. Ancak bu yöntemi kullanırsanız çok dikkatli olun çünkü testlerinizde yaptığınız verilerde yapılacak değişiklikler kalıcı olacaktır. Tüm testlerimizin orijinal hallerine geri dönmesini ve veritabanımızın bozulmamış sürümünün sunucuda kalmasını ve yedeklenmesini sağladım. Yani
projenizde bir konuma django.test.simple gelen run_test yöntemini kopyalamanız gerekir bunu yapmak için - Ben
Ardından aşağıdaki değişiklikleri yapın myproject/test/test_runner.py mayın koymak bu yöntem:
// 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)
üstündeki tüm gerekli ithalat yapmak emin olun ve ardından ayarlarında ayarını file:
TEST_RUNNER = 'myproject.test.test_runner.run_tests'
Şimdi çalıştırdığınızda. /manage.py testi Django, mevcut model tanımlarınıza dayalı yeni bir sürüm oluşturmak yerine, testleri veritabanınızın mevcut durumuna karşı çalıştırır. Böyle
Yapabileceğiniz başka bir şey, yeni run_test bir kontrol yapmak sonra yerel olarak veritabanının bir kopyasını oluşturmak ve olan() yöntemi:
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)
karşı testlerini gerçekleştirme tehlikesi yoktur Böylece senin ana veritabanı