티스토리 뷰
Unit Test 작성
처음 만들어본 프로젝트를 리펙토링 하면서 구현했던 기능에 대해 테스트 코드를 작성해 보면서 어떤 방법으로 테스트 코드를 작성하는지 알아보았다. 장고 공식 문서를 살펴보면 친절하게 테스트 코드에 대해 작성해야 하는 이유, 작성 방법, 실행 방법, 버그 수정 방법을 안내해주고 있는데, 설명이 부족한 부분은 모질라를 보고 참고했다.
Test의 종류는 3가지가 있지만 가장 작은 단위 테스트인 유닛 테스트(Unit test)를 작성하여 class 함수 단위로 작성했다.
TestCase 기본 클래스 (django.test.TestCase)
이 테스트 클래스는 테스트가 실행되기 전에 하나의 데이터베이스를 생성하고 모든 과정을 테스트 한다.
class YourTestClass(TestCase):
def setUp(self):
# Setup run before every test method.
pass
def tearDown(self):
# Clean up run after every test method.
pass
def test_false_is_false(self):
print("Method: test_false_is_false.")
self.assertFalse(False)
def test_false_is_true(self):
print("Method: test_false_is_true.")
self.assertTrue(False)
def test_one_plus_one_equals_two(self):
print("Method: test_one_plus_one_equals_two.")
self.assertEqual(1 + 1, 2)
class를 살펴보면 내부에 setUp(), tearDown, test~로 시작하는 메서드가 있는데,
- setUp() 은 각각의 테스트 메서드가 실행될 때마다 실행되며 하나의 데이터 베이스를 생성한다.
- tearDown() 은 setUp()에서 생성한 데이터 베이스 삭제 처리해 준다.
- 그리고 어떤 기대값을 갖는 메서드인지 test로 시작하는 함수명으로 Aassert 함수를 활용한 테스트 코드를 작성한다.
그리고 테스트 조건 값이 True, False 인지 테스트하는 Aassert 함수를 활용해서 테스트의 기댓값을 테스트할 수 있다.
- self.assertEquals => 생각한 값과 같은지 체크
- self.assertTrue(True) => () 안의 값이 True인지 체크
- self.assertFalse(False) => () 안의 값이 False인지 체크
test 코드 실행 명령어
# 기본 명령어
python3 manage.py test
# 특정 앱이름을 붙이면 해당 앱 test만 실행된다.
python3 manage.py test 앱 이름
test 코드 더 많은 정보 출력하는 방법
python3 manage.py test --verbosity 2
- verbosity는 기본적으로 1이며, 0,1,2,3으로 조절가능하다.
test 성공 시
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Destroying test database for alias 'default'...
test 실패 시
> python3 manage.py test
Creating test database for alias 'default'...
setUpTestData: Run once to set up non-modified data for all class methods.
setUp: Run once for every test method to setup clean data.
Method: test_false_is_false.
setUp: Run once for every test method to setup clean data.
Method: test_false_is_true.
setUp: Run once for every test method to setup clean data.
Method: test_one_plus_one_equals_two.
.
======================================================================
FAIL: test_false_is_true (catalog.tests.tests_models.YourTestClass)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\Github\django_tmp\library_w_t_2\locallibrary\catalog\tests\tests_models.py", line 22, in test_false_is_true
self.assertTrue(False)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 3 tests in 0.075s
FAILED (failures=1)
Destroying test database for alias 'default'...
'study > Django' 카테고리의 다른 글
Django - AWS S3 파일 업로드 (0) | 2023.04.14 |
---|---|
환경 변수 설정 (django-environ) (0) | 2023.04.13 |
Django - Query string 2 (0) | 2022.09.07 |
CSRF - Cross Site Request Forgeries (0) | 2022.09.05 |
Django - Query String (0) | 2022.08.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- authenticate()
- 검색 결과 내 페이지네이션
- git공부
- Spring
- 한글 형태소 분석기
- git 공부
- Django tutorial
- error: failed to push some refs to 'https://github.com/
- git
- Java
- 톰캣
- Python
- 디자인 패턴
- 암호화
- django.contrib.auth
- 환경 변수 설정
- path variable
- 회원 로그인
- 혼자 공부하는 파이썬
- 회원가입
- 웹페이지
- musma
- django-environ
- API
- Magazine K
- 커맨드 객체
- python3
- 면접을 위한 CS 전공 지식 노트
- 배열
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함