* 테스트 코드
작성한 코드들이 원하는 값을 내놓는지 확인하는 코드
TDD 테스트 주도 개발
unittest
유닛테스트 모듈 : 파이썬에 내장되어있는 테스트 라이브러리
APIRequestFactory
기본 테스트 코드 예시
from django.test import TestCase
# Create your tests here.
class TestView(TestCase):
# def test_two_is_three(self):
# self.assertEqual(2,3) # 결과 : AssertionError: 2 != 3 # FAILED (failures=1)
def test_two_is_two(self):
self.assertEqual(2,2) # 결과 : OK
생성한 어플리케이션 폴더에 tests.py 파일이 생성되어있고 해당 파일에 작성한다.
assertEqual()
reverse("url_name")
client.post
test 메소드를 실행할때마다 장고는 테스트 db를 초기화한다.
=> 두가지 함수를 독립적으로 실행할 수 없음
=> setUp 메소드 활용예시.
class YourTestClass(TestCase):
def setUp(self):
# Setup run before every test method.
pass
def tearDown(self):
# Clean up run after every test method.
pass
def test_something_that_will_pass(self):
self.assertFalse(False)
def test_something_that_will_fail(self):
self.assertTrue(False)
참조 : https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Testing
Django 튜토리얼 파트 10: Django 웹 어플리케이션 테스트하기 - Web 개발 학습하기 | MDN
Writing test code is neither fun nor glamorous, and is consequently often left to last (or not at all) when creating a website. It is however an essential part of making sure that your code is safe to release after making changes, and cost-effective to mai
developer.mozilla.org
회원가입, 로그인 테스트 코드 작성
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
from users.models import User
class UserRegistrationTest(APITestCase):
def test_registration(self):
url = reverse("user_view")
user_data = {
"username": "testuser",
"fullname": "테스터",
"email": "test@testuser.com",
"password": "password",
}
response = self.client.post(url, user_data)
print(response.data) # views.py 의 post메서드에서 return으로 받는 response
self.assertEqual(response.status_code, 200)
# def test_login(self):
# url = reverse("token_obtain_pair")
# user_data = {
# "username": "testuser",
# "fullname": "테스터",
# "email": "test@testuser.com",
# "password": "password",
# }
# response = self.client.post(url, user_data)
# print(response.data)
# self.assertEqual(response.status_code, 200)
# => 회원가입 테스트 코드에서 실행한 내용이 저장되지않으므로
# => 로그인 테스트 코드 실행시 에러가 발생한다.
# => 따라서 setUp 메소드를 활용한다.
class LoginUserTest(APITestCase):
def setUp(self):
self.data = {'username':'john', 'password':'johnpassword'}
self.user = User.objects.create_user('john','johnpassword')
def test_login(self):
response = self.client.post(reverse('token_obtain_pair'), self.data)
print(response.data["access"])
self.assertEqual(response.status_code, 200)
테스트의 대상은 장고 프레임워크 내에서 지원하는 코드는 안되고, 어플리케이션의 views.py 에서 작성한 코드가 대상이어야한다.
'AI 웹 개발 과정 > DRF 특강' 카테고리의 다른 글
django-dotenv (0) | 2022.07.30 |
---|---|
DRF JWT 사용하기 (0) | 2022.07.27 |
DRF 를 이용한 JWT 사용하기 (0) | 2022.06.27 |
DRF 퀴즈2 (0) | 2022.06.24 |
DRF 복습 퀴즈 (1) | 2022.06.23 |