2010-03-03 5 views
10

표준 Django.test.TestCase 프레임 워크를 사용하여 특정 변수의 전역 초기화를 수행하는 방법이 있습니까? 번만이 발생합니다.글로벌 django 테스트 프레임 워크에서 설정?

setUp()을 사용하면 각 테스트 전에 변수가 초기화되므로 값 비싼 작업이 필요할 때 성능이 저하됩니다. 한 번 설치 유형 기능을 실행하고 여기에 초기화 된 변수를 모든 테스트에 표시되도록하고 싶습니다.

테스트 러너 프레임 워크를 다시 작성하지 않는 것이 좋습니다.

나는 Ruby/RSpec 세계에서 전에 (: all)과 비슷한 것을 생각하고있다.

-S

답변

2

당신은 "전체 테스트 실행 프레임 워크를 다시 쓰기"필요는 없지만 사용자 정의 test_runner을 만들어야합니다 (당신은 copy the existing one 수 있고 글로벌 설정 코드를 포함하도록 수정) . 약 100 줄의 코드입니다. 그런 다음 TEST_RUNNER 설정을 맞춤 러너를 가리 키도록 설정하고 이동합니다.

+0

오른쪽 - 맞춤 테스트 러너를 피하려고했습니다. 선택의 여지가없는 것처럼 보입니다. 장고를 더 많이 사용할수록 레일스가 더 많이 놓칩니다. 파이썬은 과학 라이브러리에 대한 지원이 훨씬 뛰어 났기 때문에 함께 살 수 있다고 생각합니다. – shreddd

+1

테스트 러너는 이전 Django 버전에서 15-30 줄의 코드와 같았 기 때문에 복사하고 새로운 것을 작성하는 것은별로 중요하지 않다고 생각합니다. 그것은 전체 클래스로 바뀌었고 이후 버전에서는 커졌습니다. 완전히 새로운 러너 (추가 설정 또는 글로벌 신호)를 지정하지 않고도 (setup_test_environment()에서) 추가 설정 코드를 실행하는 방식으로 추가 할 기능 요청을 항상 제안 할 수 있습니다. –

+0

팁을 다시 주셔서 감사합니다 - 나는 setUp() 라인을 따라 이것을 수행하는 훌륭한 선언적 방법을 찾고 있었지만 주자를 불러들이는 것처럼 보입니다. 기능 요청은 의미가 있습니다. – shreddd

0

무엇 정적 변수와 클래스에 대한 ? 같은 뭔가 :

class InitialSetup(object): 
    GEOLOCATOR = GeoLocator() 
    DEFAULT_LOCATION = GEOLOCATOR.get_geocode_object(settings.DEFAULT_ADDRESS, with_country=True) 

    def setUp(self): 
     self.geolocator = InitialSetup.GEOLOCATOR 
     self.default_location = InitialSetup.DEFAULT_LOCATION 
     p = Page.objects.create(site_id=settings.SITE_ID, template='home_page.html') 
     p.publish() 
     self.client = Client() 


class AccessTest(InitialSetup, Testcase): # Diamond inheritance issue! inheritance order matters 
    def setUp(self): 
     super(AccessTest, self).setUp() 


    def test_access(self): 
     # Issue a GET request. 
     response = self.client.get('/') 

     # Check that the response is 200 OK. 
     self.assertEqual(response.status_code, 200) 
+1

안녕하세요, Maazza - 예. 정적 또는 클래스 변수를 설정합니다. 그러나 선언적인 기본 제공 솔루션을 찾고있었습니다.이 새로운 버전의 python에서 setUpClass() 함수를 사용하여 부분적으로 해결 된 것 같습니다. – shreddd

2

이 부분적 setUpClass (파이썬/장고의 최신 버전에서 해결) 적어도 나 클래스 수준의 설치 프로그램을 실행 할 수 있습니다.

관련 문제