2014-12-01 3 views
1

에 기록됩니다 나는이 코드의 다음 비트 :장고 테스트 - 해당 사용자를 시뮬레이션 내 테스트에서

def setUp(self): 
    self.client.defaults['HTTP_AUTHORIZATION'] = 'Basic ' + base64.b64encode(
     '{username}:{password}'.format(**self.login_data) 
    ) 

def test_list_view(self): 
    response = self.client.get(reverse('data_list')) 
    self.assertEqual(response.status_code, 200) 

내 문제는이 검사가 LDAP를 사용하는 기본 HTTP 인증을 통과한다는 것이다 그것은 꽤 느린 .

사용자가 로그인 한 것을 시뮬레이션 할 수있는 방법이 있습니까?

+0

로그인합니다. https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.login – Mounir

+0

Monkey patching을 사용하여 서버를 모의합니다. –

+0

@Mounir 기본 http 인증을 구현했기 때문에 사용해야합니다. 다른 방법으로 로그인하십시오. – Efrin

답변

0

이 예와 같이 모든 클라이언트 요청에 대한 요청 헤더를 대체 할 수 있습니다 : 테스트는 테스트 데이터베이스 (다른) 매번를 만들 수 있기 때문에

def test_report_wrong_password(self): 
    headers = dict() 
    headers['HTTP_AUTHORIZATION'] = 'Basic ' + base64.b64encode('user_name:password') 
    response = self.client.post(
     '/report/', 
     content_type='application/json', 
     data=json.dumps(JSON_DATA), 
     **headers) 
    self.assertEqual(response.status_code, 401) 
2

당신은 사용자를 작성해야합니다.

User.objects.create_user(username=<client_username>, password=<client_password>) 

이제 클라이언트를 만들고`self.client.login (사용자 이름 = '프레드', 비밀 번호 = '비밀')`사용하지 않는 이유는

self.c = django.test.client.Client() 
self.c.login(username=<client_username>, password=<client_password>) 
관련 문제