테스팅은 여러가지를 확인 할 수있지만 보통 crud할때 Response code가 같은지 다른지를 확인한다.
먼저 APITestCase를 상속받은 클래스를 만들어주고 url과 내용을 정해준다. 그 후 setup 함수를 정의하는데, 이 함수는 테스트함수가 실행되면 데이터가 삭제되기 때문에 삭제되지 않기를 원하는 내용을 적어주기 위한 것이다.
class TestAmenities(APITestCase):
NAME = "Amenity Test"
DESC = "Amenity Des"
URL = "/api/v1/rooms/amenities/"
def setUp(self):
models.Amenity.objects.create(
name=self.NAME,
description=self.DESC,
)
def test_create_amenity(self):
new_amenity_name = "New Amenity"
new_amenity_description = "New Amenity desc."
response = self.client.post(
self.URL,
data={
"name": new_amenity_name,
"description": new_amenity_description,
},
)
data = response.json()
self.assertEqual(
response.status_code,
200,
"Not 200 status code",
)
self.assertEqual(
data["name"],
new_amenity_name,
)
self.assertEqual(
data["description"],
new_amenity_description,
)
response = self.client.post(self.URL)
data = response.json()
self.assertEqual(response.status_code, 400)
self.assertIn("name", data)
urls.py의 url과 테스트할 url을 맞춰준 후 입력 데이터를 딕셔너리 형태로 넣어준다. 이때 데이터를 data=response.json()을 입력해서 json형태로 바꿔준 후, response의 데이터,data의 name등등을 crud했을때 요청되는 것과 예상되는 요청 결과를 assertEqual 내장함수를 이용해서 확인해준다. 만약 둘이 같다면 테스트가 통과되고 아니면 테스트가 실패한다.