2014-02-10 1 views
0

내가 뭘 잘못하고 있는지 잘 모르겠습니다. 나는이 예제를 따르려고 노력하고있다. https://docs.djangoproject.com/en/1.6/topics/testing/advanced/#module-django.test.clientDjango 테스트를 RequestFactory로 실행하면 __init__.py 오류가 반환됩니다.

나는 나의 테스트를 만들었고 반환은 이상하다.

tests.py :

from django.contrib.auth.models import User 
from django.test import TestCase 
from django.test.client import RequestFactory 
from project_name.app_name.views import ViewName 

class UrlsViewsTest(TestCase): 
    def setUp(self): 
     # every test needs access to the request RequestFactory 
     self.factory = RequestFactory() 
     self.user = User.objects.create_user(username='dave', email='[email protected]', password='top_secret') 

    def tearDown(self): 
     # Delete those objects that are saved in setup 
     self.user.delete() 

    def test_view_name(self): 
     #Create an instance of a GET request 
     request = self.factory.get('/app/') 

     # Recall that middleware are not suported. You can simulate a 
     # logged-in user by setting request.user manually. 
     request.user = self.user 

     # Test ViewName() as if it were deployed at /app/ 
     response = ViewName(request) 
     self.assertEqual(response.status_code, 200) 

결과 :

Creating test database for alias 'default'... 
E 
====================================================================== 
ERROR: test_view_name (project_name.app_name.tests.UrlsViewsTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/dave/sandbox/project_name/project_name/app_name/tests.py", line 25, in test_view_name 
    response = ViewName(request) 
TypeError: __init__() takes exactly 1 argument (2 given) 

---------------------------------------------------------------------- 
Ran 1 test in 0.168s 

FAILED (errors=1) 
Destroying test database for alias 'default'... 

나는 무엇을 다음과 같은 방법을 알아낼 수 아니에요 :

TypeError: __init__() takes exactly 1 argument (2 given) 

내가 밖으로 정렬 어떻게 무엇 그게 의미하고 어떻게 고칠 수 있니?

저는 Django Google 그룹스를 찾고 있으며 여기에 있습니다. 나는 예를 보지 않고있다.

+0

'response = ViewName (request)'호출에 문제가 있습니다. 클래스 이름과 충돌하고 있습니까? – karthikr

+0

ViewName이란 무엇입니까? 그것은 클래스 기반의 뷰 기능입니까? 그리고 테스트 클라이언트를 통해 의견을 나누고 싶지 않은 이유는 무엇입니까? –

+1

'ViewName.as_view() (request)'시도 – sneawo

답변

0

해체 중에 개체를 삭제하지 않아도됩니다. 테스트 데이터베이스는 TestCase 클래스의 각 테스트 정의에 대해 자체적으로 다시 설정됩니다. 해체는 새 코드를 정의하는 mock 및 mox와 같은 항목에만 필요합니다.

Solution1 :

response = ViewName.as_view()(request) 

Solution2 :

# ignore importing ViewName and RequestFactory 
response = self.client.login_as(user=self.user) 
response = self.client.get('/app/') 

Solution3 : 직접 단위 테스트 기능 만 대답으로이 문제가 기록 될 수 있도록 여기에

는 메시지 스레드에 대한 요약이다 너는 썼다

self.view = ViewName() 
output = self.view.new_function(input) 
self.assertEqual(output, expected) 
관련 문제