unittest 모듈 기초
2019-05-30
unittest 모듈을 이용한 기능 테스트 확장
User story
사용자 관점에서 어떻게 APP이 동작해야 하는지 기술한 것, 기능 테스트 구조화를 위해 사용
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
import unittest
class NewVisitorTest(unittest.TestCase):
def setUp(self):
binary = FirefoxBinary('C:\Program Files (x86)\Mozilla Firefox\\firefox.exe')
self.browser = webdriver.Firefox(firefox_binary=binary)
self.browser.implicitly_wait(3)
def tearDown(self):
self.browser.quit()
def test_can_start_a_list_and_retrieve_it_later(self):
self.browser.get('http://localhost:8000')
self.assertIn('To-Do', self.browser.title)
self.fail('Finish the Test')
if __name__ == '__main__':
unittest.main(warnings='ignore')
implicitly_wait
는 암묵적 대기를 의미하며 괄호안에 있는 시간(초 단위)만큼 대기한다.
필요에 따라 특정 시간 대기 후 테스트를 진행하기 위해 작성한다.
setUp
은 시작 전에 작동하는 메소드이며 tearDown
은 동작 후에 작동한다.
그래서 테스트를 마치면 알아서 브라우저를 닫아준다.
그리고 테스트를 하는 함수의 이름은 항상 test_
로 시작해야 한다.
저게 오타가 나면 ran 0 test in
이런 식으로 오류가 난다.
코드를 실행하면 아래와 같은 결과가 나온다.
PS C:\Users\pjs21\Desktop\TDD> python functional_test.py
F
======================================================================
FAIL: test_can_start_a_list_and_retrieve_it_later (__main__.NewVisitorTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "functional_test.py", line 18, in test_can_start_a_list_and_retrieve_it_later
self.assertIn('To-Do', self.browser.title)
AssertionError: 'To-Do' not found in 'Django: the Web framework for perfectionists with deadlines.'
----------------------------------------------------------------------
Ran 1 test in 5.741s