2012-02-12 2 views
7

응용 프로그램을 테스트 해본 결과 응용 프로그램 자체와 관련이없는 것처럼 보이는 오류가 발생했습니다. 다음과 같은 단위 테스트가 있습니다.TypeError : int() 인수는 Django의 'AnonymousUser'가 아닌 문자열 또는 숫자 여야합니다.

class TagSaveAndLoadTest(TestCase): 
    fixtures = ['users.json'] 

    def setUp(self): 
     self.client = Client() 
     self.client.login(user='test_user', password='123') 

    def test_register_save(self): 
     tag_dict = { 
         'sex' : 4, 
         'drugs' : 3, 
         'rocknroll' : 1, 
        } 
     response = self.client.post('/register/save_tags/', {'skilltags' : json.dumps(tag_dict)}) 
     self.assertEqual(response.status_code, 200) 

오류는 TypeError: int() argument must be a string or a number, not 'AnonymousUser'입니다. 추적 요청에 나타나는 파일은 base.py, manages.py, query.py 등입니다. 내 요청이 미들웨어 어딘가에 갇혀있는 것처럼 보입니다. 어떻게 대처할 지 잘 모릅니다. 요청이 내보기 또는 컨트롤러에 도달하지 못하는 이유는 무엇입니까? 'setUp()'함수가 테스트 사용자를 기록하면 AnonymousUser에 문제가있는 이유는 무엇입니까?

전체 추적은 here, 미리 감사드립니다.

답변

4

역 추적에 너무 겁내지 않도록하십시오. 당신이 필요한 모든 정보는 장고 내부를 충분히 지나치게 바라 보면 거기에 있습니다. 요청이보기에 도달했습니다. 문제는 미들웨어에 없습니다. client.login 호출이 작동하지 않는 것 같습니다. request.user가 익명 사용자이기 때문에 다음 필터 문이 실패합니다.

Skill.objects.filter(user=request.user).delete() 

테스트에서 client.login 줄을 인쇄 해보십시오.

  1. 귀하의 조명기에 올바른 사용자 이름과 암호를 사용하고 있습니다. 사용자가 로그인 한 경우 True를 반환합니다.
  2. 사용자 고정 장치를 성공적으로로드하고 있습니다. 올바른 파일 이름을 가지고 있습니까? Django 컨벤션은 s가없는 user.json입니다.
  3. 테스트 클래스가 Django TestCase 클래스를 하위 클래스로 지정하여 조명기가로드되는지 확인하십시오.
2

문제는이 코드 줄에 : 당신은 ORM의 열 조건의 값으로 사용자 개체를 전달하는

File "E:\ev\site\project\..\project\jobs\views.py", line 69, in post 
    Skill.objects.filter(user=request.user).delete() 

. 이게 너의 시야가 아닐까?

관련 문제