일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- gcc regex
- python popen
- python os
- 정규식 컴파일
- influxdb 설치
- c3 초
- centos pyhon 설치
- c3 step graph
- c++ 정규식
- g++ 업데이트
- CentOS7
- c3 second
- linux시간으로 변경
- InfluxDB
- snmp
- semanage
- snmp test
- regex_search
- c3 축 가리기
- telegraf
- c3 축 없애기
- python subprocess
- 1697
- subporcess path
- gcc 업데이트
- 정규식 문자열 출력
- grafana dashboard
- 정규식 활용
- selinux port 등록
- 백준
- Today
- Total
리셋 되지 말자
[TDD with Python] - 1 본문
참고 사이트
https://wikidocs.net/book/1379
세상엔 공개된 좋은 자료가 참 많다. 찾기가 힘들고 검증이 필요하지만... 오픈소스 최고다
테스트 환경
OS : ubuntu 18.04
Python :
$ python3 --version
Python 3.6.9
가상환경 활성화
우분투는 venv를 쓰기 위해서 별도로 설치가 필요. 설치한다
sudo apt-get install python3-venv
가상환경을 생성한다. 이름은 아무거나 해도 상관없음.
python3 -m venv test-django
가상환경을 활성화 한다.
source test-django/bin/activate
필요한 패키지 설치
pip을 업그레이드 해준다.
pip install --upgrade pip
$ pip --version
pip 21.1.1 from /home/ubuntu/바탕화면/Python/test-django/lib/python3.6/site-packages/pip (python 3.6)
django, selenium을 설치해준다
pip install django selenium
$ pip freeze
asgiref==3.3.4
Django==3.2.3
pkg-resources==0.0.0
pytz==2021.1
selenium==3.141.0
sqlparse==0.4.1
typing-extensions==3.10.0.0
urllib3==1.26.4
Geckodriver 설치
우분투라면 기본적으로 인터넷 브라우저가 FireFox로 설치되어 있다. 그러므로 Geckodriver를 설치한다. 크롬이라면 크롬드라이버를 설치하면 된다. 다운로드 여기서 geckodriver-v0.29.1-linux64.tar.gz를 다운받았다.
다운로드 받고 압축을 풀어주면 된다.
그리고 geckodriver파일이 있는 해당 경로를 PATH에 등록해준다.
export PATH=$PATH:/home/ubuntu/다운로드/geckodriver
Django 프로젝트 생성
적당히 Django 프로젝트를 생성할 디렉토리 superlists를 만들고, 해당 디렉토리로 이동한 뒤 django-admin startproject 명령어로 프로젝트를 생성한다.
mkdir superlists
cd superlists/
django-admin startproject config .
$ ls
config manage.py
기능 테스트 작성 및 테스트
superlists 디렉토리 위치에서 function_tests.py 파일을 작성한다.
- function_tests.py
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://localhost:8000')
assert 'Django' in browser.title
위 코드의 내용은 다음과 같다:
- Selenium webdriver를 구동하여 실제로 파이어폭스 브라우저를 띄운다.
- 로컬 컴퓨터에서 웹 페이지가 열리는지 확인한다.
- 열린 웹 페이지의 title에서 Django 문자열이 있는지 확인한다.
작성한 코드를 실행한다.
$ python function_tests.py
Traceback (most recent call last):
File "function_tests.py", line 4, in <module>
browser.get('http://localhost:8000')
File "/home/ubuntu/바탕화면/Python/test-django/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "/home/ubuntu/바탕화면/Python/test-django/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/ubuntu/바탕화면/Python/test-django/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//localhost%3A8000/&c=UTF-8&d=Firefox%EA%B0%80%20localhost%3A8000%20%EC%84%9C%EB%B2%84%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.
웹브라우저가 뜨면서 오류가 발생한다.
webserver를 실행시킨 뒤, 새로운 터미널창을 열고 다시 테스트 파일을 실행한다.
$ python manage.py runserver
다시 에러가 발생한다.
$ python function_tests.py
Traceback (most recent call last):
File "function_tests.py", line 6, in <module>
assert 'Django' in browser.title
AssertionError
브라우저 창을 보면, 타이틀 부분에 'Django'가 없다. 테스트 파일을 수정한다.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://localhost:8000')
assert 'The install worked successful' in browser.title
다시 테스트 파일을 실행한다.
$ python function_tests.py
아무런 오류없이 테스트를 통과한 것을 확인할 수 있다.
추가
코드를 아래와 같이 수정하면, browser의 title이 실제로 뭐였는지 까지 알 수 있다.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://localhost:8000')
assert 'Django' in browser.title, "Browser tile was : " + browser.title
$ python function_tests.py
Traceback (most recent call last):
File "function_tests.py", line 6, in <module>
assert 'Django' in browser.title, "Browser tile was : " + browser.title
AssertionError: Browser tile was : The install worked successfully! Congratulations!
'TDD' 카테고리의 다른 글
[Selenium] webdriver.dispose() .close() .quit() 차이 (0) | 2021.06.22 |
---|---|
docker django selenium 테스트 (0) | 2021.06.18 |
[TDD with selenium] Django Selenium test 학습 (0) | 2021.06.16 |
TDD 테스트 종류 (0) | 2021.05.17 |
[TDD with Python] - 2 (0) | 2021.05.17 |