-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
안녕하세요
20.02.05 17:31 작성 조회수 77
0
def test_post_detail(self):
''''''''''
self.assertIn(category_politics.name, main_div.text)
>> 여기에서 category_politics라고만 하면 왜 안될까요?
create_tag() 할때 Tag모델 가져오는데, 해당 모델에 아래와 같이
name으로 객체를 표현하는 함수가 있더라구요.
def __str__(self):
return self.name
그렇다면 category_politics만 해도 name이 호출되야 할텐데
그게 아니라서 질문드립니다
답변을 작성해보세요.
0
SungYong Lee
지식공유자2020.02.05
이 내용은 클래스, 인스턴스에 대한 공부가 약간 필요할 것 같습니다.
category_politics 는 Category 클래스(장고에서는 모델로 부릅니다.)의 인스턴스입니다. category_politics의 자료형은 Category이죠.
그리고 main_div.text의 자료형은 str(텍스트) 입니다.
따라서 자료형이 다르므로 assertEqual로 비교하면 다르다는 결과가 나오는 것이죠.
물론 template(HTML 파일)에서 { category_politics } 라고 쓰면 category_politics의 name이 출력됩니다. template에서 category_politics라고 쓴다면 string 형태로 HTML 파일에 박아야 하므로 __str__ 함수를 이용하게 되죠. 그러나 파이썬 안에서는 다릅니다. 파이썬 안에서 category_politics 인스턴스를 강제로 str(텍스트) 형태로 바꿔주고 싶다면, str(category_politics)라고 써줘야 합니다.
답변 1