-
Django 기본 view 테스트Django testing 2021. 6. 2. 18:01
Django 를 개발하면서 제일 기본적인 view 를 생성하고 기본 결과를 테스트 한다.
TestCase 에서 제공하는 client 라는 객체를 이용해서 get, post 같은 method를 테스트 할 수 있는데,
여기서는 우선 get을 테스트할 예정이다.
먼저 views 파일에서 AuthorListView 클래스를 생성합니다.
from django.http import JsonResponse from django.shortcuts import render from django.views import generic from catalog.models import Author class AuthorListView(generic.ListView): model = Author paginate_by = 10 def get(self, request): # 뷰 로직 작성 author_list = list(Author.objects.filter().values()) return JsonResponse(author_list, safe=False)
해당 클래스를 urls 에서 'catalog_list' 경로로 매칭시켜 줍니다.
그리고, test_views.py 를 만들어서 AuthorListViewTest 를 생성합니다.
여기서는 setUpTestData() 함수에서 객체를 13개 추가 합니다.
그리고, 해당 추가해 준 갯수가 해당 함수를 호출한 결과와 일치하는지 테스트 합니다.
import json from django.test import TestCase from catalog.models import Author class AuthorListViewTest(TestCase): @classmethod def setUpTestData(cls): # Create 13 authors for pagination tests number_of_authors = 13 for author_id in range(number_of_authors): Author.objects.create( first_name=f'Christian {author_id}', last_name=f'Surname {author_id}', ) def test_view_url_exists_at_desired_location(self): response = self.client.get('/catalog/catalog_list/') # print(response) json_content = json.loads(response.content) self.assertEqual(response.status_code, 200) self.assertEqual(14, len(json_content)) def test_view_url_accessible_by_name(self): response = self.client.get(reverse('catalog_list')) self.assertEqual(response.status_code, 200)
여기서 self.assertEqual(14, len(json_content)) 이 부분을 보게 되면
추가해준 개수는 13인데, 14와 비교하는 것은
개인 DB에 기본적인 데이터 1 를 추가했기 때문에
13이 아닌 14와 체크를 하고 있다.
self.assertEqual(response.status_code, 200)
response.status_code 가 성공인 경우 200 값을 리턴하므로,
정상적인 성공 결과를 체크한다.
마지막 reverse('catalog_list') 를 통해서 가져온 url로
response.status_code 가 성공인지 같이 체크한다.
python manage.py test --settings='django_testing.settings_test' --verbosity 3
로 테스트 해보게 되면 다음과 같은 결과를 확인할 수 있다.
'Django testing' 카테고리의 다른 글
Github Action으로 django test 하기(CI) (0) 2021.06.04 django 테스트DB 없이 유닛 테스트하기 (0) 2021.05.31 파이썬 TestCase, unit test 사용하기 (1) 2021.05.31 Testing 의 시작과 종류 (0) 2021.05.31