파이썬 장고에서 테스트(Test)를 작성하고 실행하는 방법은?
_____Q1: 장고에서 테스트를 작성하려면 어디에 파일을 만들어야 하나요?
A1: 각 앱 폴더 내에 `tests.py` 파일이나 `tests/` 디렉토리를 만들어 테스트 코드를 작성합니다. 보통 `app_name/tests.py` 또는 `app_name/tests/test_models.py` 같은 구조를 사용합니다.
---
Q2: 장고 테스트는 어떤 클래스를 상속해서 작성하나요?
A2: `django.test.TestCase` 클래스를 상속받아 작성합니다. 이 클래스를 사용하면 데이터베이스 롤백 등 테스트 환경이 자동으로 구성됩니다.
```python
from django.test import TestCase
class YourModelTest(TestCase):
def test_something(self):
테스트 코드 작성
self.assertEqual(1 + 1, 2)
```
---
Q3: 테스트 메서드 이름은 어떻게 지어야 하나요?
A3: 테스트 메서드는 반드시 `test_`로 시작해야 테스트 러너가 인식합니다. 예: `test_model_creation`, `test_view_response` 등
---
Q4: 테스트에서 데이터베이스를 사용할 때 주의할 점은?
A4: `TestCase`는 각 테스트 메서드가 실행될 때마다 데이터베이스를 트랜잭션 롤백하여 '테스트 독립성'을 보장합니다. `setUp()` 메서드에서 테스트용 데이터를 생성할 수 있습니다.
---
Q5: 장고에서 테스트를 실행하는 명령어는?
A5: 터미널에서 프로젝트 최상위 디렉토리(장고가 인식하는 위치)에서 다음 명령어를 실행합니다.
```bash
python manage.py test
```
특정 앱만 테스트하려면:
```bash
python manage.py test app_name
```
---
Q6: 테스트 커버리지를 확인하려면?
A6: `coverage` 패키지를 설치한 후 다음과 같이 사용합니다.
```bash
pip install coverage
coverage run --source='.' manage.py test
coverage report
coverage html 결과를 html 파일로도 확인 가능
```
Q7: 테스트 중에 fixtures를 사용하려면?
A7: JSON, YAML, XML 포맷의 fixture 파일을 만들어 `fixtures` 디렉토리나 앱 폴더에 넣고, `fixtures = ['fixture_name']`를 `TestCase` 클래스에 정의하거나 `loaddata` 명령어로 수동으로 불러옵니다.
```python
class MyTest(TestCase):
fixtures = ['testdata.json']
```
---
Q8: 뷰(View) 테스트는 어떻게 작성하나요?
A8: `self.client` 객체를 사용해 HTTP 요청을 보내고 응답을 검증합니다.
```python
class MyViewTest(TestCase):
def test_index(self):
response = self.client.get('/')
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Welcome")
```
---
Q9: 폼(Form) 테스트는 어떻게 작성하나요?
A9: 폼 클래스를 인스턴스화 한 뒤 `is_valid()` 메서드를 호출해 검증할 수 있습니다.
```python
from .forms import MyForm
class FormTest(TestCase):
def test_valid_data(self):
form = MyForm({'name': 'Test', 'age': 30})
self.assertTrue(form.is_valid())
```
---
Q10: 테스트 실패 시 디버깅 팁은?
A10:
- `python manage.py test -v 2` 명령어로 상세 출력 설정
- 개별 테스트 모듈 또는 클래스만 실행해 원인 좁히기
- `print()` 대신 `self.assert*` 메서드를 적극 활용
- `setUp()`과 `tearDown()` 메서드를 이용해 테스트 환경 상태 관리
---
요약
- 테스트 파일은 `tests.py` 또는 `tests/` 디렉토리
- 테스트 클래스는 `django.test.TestCase` 상속
- 메서드 이름은 반드시 `test_`로 시작
- `python manage.py test`로 실행
- `self.client`로 뷰 테스트, 폼 객체로 폼 테스트 작성
- fixtures와 coverage 도구 활용 가능
장고 테스트는 단위테스트부터 통합테스트까지 쉽게 작성할 수 있어 코드 품질 관리에 필수적입니다.
작성자:
ㅁㅁ [비회원]
| 작성일자: 1년 전
2024-08-26 08:17:57
조회수: 148 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 148 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.