2012-02-13 5 views
2

다음과 같은 구조의 꽤 복잡한 django app가 있습니다.django app 용 사용자 정의 테스트 모음

/myapp 
/myapp/obj1/.. 
/myapp/obj1/views.py 
/myapp/obj1/forms.py 
/myapp/obj2/.. 
/myapp/obj2/views.py 
/myapp/obj2/forms.py 
/myapp/tests/.. 
/myapp/tests/__init__.py 
/myapp/tests/test_obj1.py 
/myapp/tests/test_obj2.py 

나는 더 많은 개체를 가지고 있습니다. /myapp/tests/__init__.py에서 test_obj1.pytest_obj2.py에서 TestCase 인스턴스를 가져오고 사용 가능한 모든 테스트를 실행하기에 충분합니다.

내가하려는 것은 사용자 지정 테스트 제품군을 만드는 것입니다. 문서에 따르면

There is a second way to define the test suite for a module: if you define a function called suite() in either models.py or tests.py, the Django test runner will use that function to construct the test suite for that module. This follows the suggested organization for unit tests. See the Python documentation for more details on how to construct a complex test suite.

그래서, 내가 같이이 함수를 만들었습니다 : 나는 테스트를 실행할 때

def suite(): 
    suite = unittest.TestSuite() 
    suite.addTest(TestObj1Form()) 
    suite.addTest(TestObj2Form()) 
    return suite 

그러나,이 오류가 발생합니다 : ValueError: no such test method in <class 'myproject.myapp.tests.test_obj1.TestObj1Form'>: runTest합니다. 물론이 메서드를 정의 할 수는 있지만 테스트를 실행하면이 메서드 만 호출되고 test* 메서드는 모두 무시됩니다.

어떤 제안 django 응용 프로그램에 대한 사용자 정의 테스트 스위트를 제대로 만드는 방법? 나는 봤어 그리고 난 그것에 대해 아무것도 발견.

답변

2

당신은 특별한 기능을 모든 테스트을 추가해야합니다 :

suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestObj1Form)) 
+0

감사합니다, 그것을 작동합니다. –