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

0개의 댓글

관련 채용 정보