[Django] Django HttpResponse를 이용해서 간단하게 요청 및 응답 테스트하기

업데이트(2018.04.16): 내용을 조금 수정하였습니다.

python에서 HttpResponse를 이용해 간단하게 Http요청 응답을 테스트하는 방법을 알아보자


환경 및 선수조건

  • Python
  • Django에 대한 기본 사용 및 이해
  • Selenium


소개

TDD를 공부하면서 프로젝트를 진행하기 때문에 현재 어떠한 일들을 구현할 때 기능 테스트를 하게된다. 그러한 기능 테스트를 진행하면서 이제 Http요청을 보내고 응답을 하였을 때 그 응답의 결과에 어떠한 특정한 문자열이 있는걸 확인할 때 본인은 html을 직접 만들어서 template를 만들고 응답해주는 코드를 작성하려 하였는데 더 쉬운 방법이 있어서 포스팅을 하려고 한다.


HttpRequest와 HttpResponse는?

  • HttpRequest: 요청에 대한 메타정보를 가지고 있는 객체
  • HttpResponse: 응답에 대한 메타정보를 가지고 있는 객체


상황 가정

홈페이지를 열었을 때 “돈까스 모임”이라는 모임의 텍스트가 있어야 한다고 가정을 하고 selenium을 통해 테스트를 해봅시다.


HttpResponse에 대한 예제 및 테스트

urls.py 코드 작성

urls.py는 장고에서 특정 url에 대한 요청을 어떤 함수나 클래스로 매핑해서 연결시켜주는 역할을 하는 부분입니다. 여기에서는 어떤 요청이던지간에 views.homepage의 함수로 연결되게 해두었습니다.

urls.py

from django.conf.urls import url
from django.contrib import admin
from moim import views

urlpatterns = [
    url(r'^$', views.homepage, name='home'),
    url(r'^admin/', admin.site.urls),
]


views.py 코드 작성

views.py는 urls.py에서 라우팅 되어온 요청에 대해서 처리하고 그에 따른 결과를 응답해주는 부분이 작성되는 곳입니다.

views.py

from django.shortcuts import render
from django.http import HttpResponse


def homepage(request):
    return HttpResponse('돈까스 모임')


테스트 코드 작성

이제 urls.py에서 views.py의 특정 함수(이 본문의 경우에는 homepage 함수)로 연결해주고 views.py의 homepage 함수에서 “돈까스 모임”이라고 응답을 해주므로 이제 확인하는 테스트 코드를 작성해보겠습니다.

homepage_test.py

def test_checking_prepared_environment_with_selenium():

    #드라이버를 설치하고 가져오는 코드
    driver.get("http://localhost:8000")
    assert '돈까스 모임' in driver.page_source
    driver.close()


테스트 및 실행

장고 서버를 실행시키고 테스트를 돌려보도록 하겠습니다.

$ python manage.py runserver # 장고 서버 실행
$ pytest homepage_test.py # 테스트 코드 실행


다음처럼 테스트가 성공적으로 실행됨을 확인 할 수 있습니다.

Done Test


참고자료