Django API testing

김혁준·2023년 4월 22일
0

django

목록 보기
3/18

테스팅은 여러가지를 확인 할 수있지만 보통 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 내장함수를 이용해서 확인해준다. 만약 둘이 같다면 테스트가 통과되고 아니면 테스트가 실패한다.

profile
스프링 개발자 지망생입니다

0개의 댓글