이것은 상대적인 타이밍으로 나를 끌어 들일만큼 충분하지만, 병렬로 실행되는 테스트에서는 작동하지 않으며 타이밍의 정확도를 향상시킬 수있는 영역이 있습니다. 그럼에도 불구하고 :
는
재정 settings.py
를 통해 기본 러너 :
TEST_RUNNER = 'myapp.test_runner.MyTestRunner'
그렇기 때문에 자신의 test_runner myapp/test_runner.py
만들 :
from django.test.runner import DiscoverRunner
class MyTestRunner(DiscoverRunner):
test_runner = TimedTextTestRunner
을 그리고, 차례로, 점에서 resultClass를 오버라이드 (override) :
from unittest.runner import TextTestRunner, TextTestResult
class TimedTextTestRunner(TextTestRunner):
resultclass = TimedTextTestResult
을
이제 결과 개체는 단지 하나의 그러나 많은 사람들이, 그래서 우리는 테스트에 의해 keyed 시계의 컬렉션이 필요합니다.그런 다음 테스트 시작 시간을 캡처하고 시간이 성공 문자열을 인쇄 할 때 경과를 인쇄 :
class TimedTextTestResult(TextTestResult):
def __init__(self, *args, **kwargs):
super(TimedTextTestResult, self).__init__(*args, **kwargs)
self.clocks = dict()
def startTest(self, test):
self.clocks[test] = time()
super(TextTestResult, self).startTest(test)
if self.showAll:
self.stream.write(self.getDescription(test))
self.stream.write(" ... ")
self.stream.flush()
def addSuccess(self, test):
super(TextTestResult, self).addSuccess(test)
if self.showAll:
self.stream.writeln("ok-dokey (%.6fs)" % (time() - self.clocks[test]))
elif self.dots:
self.stream.write('.')
self.stream.flush()
나를 보고서는 다음과 같이보고 테스트했다 :
test_price_impact (api.tests.TestGroupViews) ... ok-dokey (3.123600s)
test_realised_spread (api.tests.TestGroupViews) ... ok-dokey (6.894571s)
test_sqrt_trade_value (api.tests.TestGroupViews) ... ok-dokey (0.147969s)
test_trade_count_share (api.tests.TestGroupViews) ... ok-dokey (3.124844s)
test_trade_size (api.tests.TestGroupViews) ... ok-dokey (3.134234s)
test_value_share (api.tests.TestGroupViews) ... ok-dokey (2.939364s)
덕분에 짝을했지만 작동하고 대한의 코를 사용하지 말고, DB는 포스트 그레스 (postgres)에 묶여 있고, 마이그레이션은 테스트에 중요하며, 그 숫자는 예제를 제공하기 위해 제작되었습니다. 그러나, 어이, 확실히 아무도에서 응답보다는 잘. 나는 그 노력에 감사한다. –