[docs.djangoproject.com] translation
https://docs.djangoproject.com/en/1.7/topics/testing/
https://docs.djangoproject.com/en/1.7/topics/testing/overview/
Testing in Django Automated testing is an extremely useful bug-killing tool for the modern Web developer. You can use a collection of tests – a test suite – to solve, or avoid, a number of problems:
Testing a Web application is a complex task, because a Web application is made of several layers of logic – from HTTP-level request handling, to form validation and processing, to template rendering. With Django’s test-execution framework and assorted utilities, you can simulate requests, insert test data, inspect your application’s output and generally verify your code is doing what it should be doing. The best part is, it’s really easy. The preferred way to write tests in Django is using the unittest module built in to the Python standard library. This is covered in detail in the Writing and running tests document. |
장고에서의 테스트 _ django.test 자동화된 테스트는 모던 웹 개발자를 위한 유용한 Debugger 입니다. 당신은 테스트 컬렉션을 사용하거나 많은 문제점들을 피할 수 있습니다:
웹 어플리케이션을 테스트하는 것은 복잡한 작업입니다. 웹 어플리케이션은 많은 로직들의 층으로 이루어져있기 때문입니다. – HTTP 레벨의 요청 핸들링(request handling) 에서 폼 유효성과 처리, 템플릿 렌더링까지 됩니다. 장고 테스트 실행 프레임워크(test-execution framework) 적절한 유틸리티로 당신은 요청을 시뮬레이팅 할 수 있고 테스트 데이터를 넣을 수 있으며 어플리케이션의 출력을 검사하고 당신의 코드가 의도대로 작동하고 있는지 를 확인 할 수 있습니다. 장고 테스트를 작성하는 좋은 방법은 파이썬 표준 라이브러리에 내장 된 유닛 테스트 모듈(unittest)을 사용하는 것입니다. |
django.test.TestCase 는 각각 테스트의 트렌젝션의 분리를 제공합니다. 이 모듈은 클래스 기반 접근법으로 테스트를 정의합니다.
tests.py |
from django.test import TestCase class post(TestCase): print('test') |
Console(success) Example |
C:\Django\opt\webapp\testapp> manage.py test board test Creating test database for alias 'default'... ---------------------------------------------------------------------------------------------- Ran 0 tests in 0.000s OK Destroying test database for alias 'default'… |
테스트를 실행하면(manage.py test) 해당 영역에서 test로 시작하는 모든 파일에서 TestCase 를 찾아 그 테스트 케이스에서 테스트를 수행합니다.
테스트는 DB가 필요하지만 실 DB 를 사용하지 않고 별도로 빈 데이터베이스를 만들고 테스트한 후 삭제합니다.
모든 테스트를 실행하고 실패 or 성공 여부에 관계없이 테스트 DB를 삭제(destroy) 합니다.
SQ Lite를 사용하는 경우엔 테스트 DB는 메모리 DB를 사용합니다.
기본적으로 테스트DB는 모델에 정의된 이름 앞에 TEST_ 를 붙이는 식으로 생성됩니다.
django.test.Client 는 URL에 low-level HTTP 부터 페이지 컨텐츠 까지 GET, POST 요청에 대한 응답을 시뮬레이팅 해줍니다.
tests.py |
from django.test import TestCase from django.test import Client class post(TestCase): c = Client() response = c.get('/board/get_post/32') print(response.status_code) response = c.post('/board/write_post/',{"author_id":"아이디", "post_title":"제목", "post_contents":"내용"}) print(response.status_code) |
Console |
C:\Django\opt\webapp\testapp> manage.py test board 301 200 Creating test database for alias 'default'... ---------------------------------------------------------------------------------------------- Ran 0 tests in 0.000s OK Destroying test database for alias 'default'… |
그외 참고 링크
Django-testing-base 모듈 http://django-testing-base.readthedocs.org/en/latest/ 등
A Guide to Testing in Django
http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/
http://toastdriven.com/blog/2011/apr/17/guide-to-testing-in-django-2/
'it > programming' 카테고리의 다른 글
(jQuery)javascript 셀렉터 가져오기 (0) | 2015.05.07 |
---|---|
NGINX + PostgreSQL 을 위한 리서치 (*번역) (0) | 2015.03.04 |
[javascript] 숫자 두자리로 만들기 (0) | 2015.02.17 |