Django에서 데이터베이스를 설정 한 경우 어떻게 TestRunner에 '라이브'데이터베이스를 사용할 수 있습니까? DATABASE_ * 설정은 settings.py
에 있습니다.) 임시 데이터베이스에서 실행하는 대신.Django의 'manage.py test'를 사용하면서 settings.py의 'live'데이터베이스에 대한 단위 테스트 수행
예를 들어, 나는 settings.py
에 지정된 년대 live
데이터베이스에서 다음 테스트를 실행하고 싶습니다 : 현재
import unittest
from example import models
class DBDriverTest(unittest.TestCase):
db testDriver(self):
"Connect to the live database and drop in sample value."
m = models.MyModel('hello')
m.save() # ... save to the live database from settings.py
위의 코드 만 구성되어있어 테스트 데이터베이스에 저장합니다. 이것은 응용 프로그램이 데이터베이스에서 작동하는 여러 개의 병렬 프로세스를 가지고 있기 때문에 매우 제한적입니다. 그리고 유닛 테스트는 '실제'데이터베이스로 물을 퍼 올릴 수없고 잠자 지 않은 곳에서 볼 수있는 기능이 없으면 불완전한 (그리고 비 일관적인) 테스트가 될 것입니다. 내가 생각할 수있는
두 가지 가능성이 옵션은 다음과 같습니다 장고 API를 통해
플러그 '수동'낮은 확인 settings.py
에서 데이터베이스에 연결하는 방법을 알아 내기 위해 수동으로 '라이브'데이터베이스에 -level 연결은 장고의 공개 API 아래 것들에 의존 할 것입니다 있기 때문에
선행이 문제가 웁니다. 후자는 데이터베이스에 무관 한 Django 데이터베이스 API를 앞 지르고 더 수동적으로 집중하기 때문에 문제가됩니다.
귀하의 생각과 의견에 감사드립니다.
브라이언
감사합니다. Gruszczy. 나는'test_runner'를 생성하는 것이 일반적으로 최선의 방법이 아니라는 것에 동의하지만 우리의 경우는 표준과 다소 다릅니다. 첫째, 데이터는 약 5 분 후에 관련성이 없습니다. 두 번째로, 데이터베이스는 삽입을 위해 (Django에 의해) (데몬에 의해) 폴링됩니다. 디먼이 특정 데이터를 한 행에 표시하면 해당 행이 변경 될 수 있습니다. 단위 테스트가 (1) 삽입이 적절하고 (2) 데몬이 올바르게 작동하는지 테스트하도록합니다.불행하게도, 조명기는 데몬이 단위 테스트 데이터베이스에 접근하는 것을 허용하는 방법의 문제를 해결하지 못합니다. 그러나 사용자 정의 test_runner가 문제를 해결해야합니다! –
와우! 데이터는 5 분 후에 관련이 없습니까? 매우 실용적이고 시원하게 들리는 이유는 무엇입니까? – gruszczy
작동하는 경우 여기에 게시하겠습니다. : O) 나 zdrowie! –