Selenium
웹 기반 솔루션을 만들고 있는데, 이를 테스트 자동화하기 위해 Selenium을 사용했다.
우선 Selenium이 무엇인지부터 알아보자.
Selenium : Selenium is a portable framework for testing web applications. Selenium provides a playback tool for authoring functional tests without the need to learn a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including C#, Groovy, Java, Perl, PHP, Python, Ruby and Scala. The tests can then run against most modern web browsers. (출처 : https://en.wikipedia.org/wiki/Selenium_(software))
위키의 설명대로 웹 어플리케이션을 테스팅 하기에 최적화 되어있으며, 다양한 언어로 사용할 수 있다.
간단하게 설명하면 브라우저에서 HTML Tag를 기반으로 파싱하여 다양한 이벤트(마우스 클릭, 키보드 작성 등)들을 스크립트로 구현하여 자동으로 이벤트를 수행하게 할 수 있다. 보통 웹 브라우저를 자동화하기 위해 많이 사용된다.
<설치>
설치는 파이썬 사용자라면 pip 기반으로 selenium을 간단하게 설치할 수 있다.
pip install selenium
<드라이버 다운로드>
브라우저를 기반으로 테스트를 수행하기 떄문에 이를 위한 드라이버도 설치해야 한다.
- Chrome : https://sites.google.com/a/chromium.org/chromedriver/downloads
- Edge : https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
- Firefox : https://github.com/mozilla/geckodriver/releases
- Safari : https://webkit.org/blog/6900/webdriver-support-in-safari-10/
<Simple Usage>
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
time.sleep(5)
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
time.sleep(5)
assert "No results found." not in driver.page_source
driver.close()
위의 소스코드를 간략하게 설명하자면
브라우저로 firefox를 사용하기 위한 driver를 설정하고 get 함수를 통해 브라우저가 해당 url(https://www.python.org/)로 이동한다.
제대로 이동했는지 확인하기 위해 assert함수를 이용하여 title값에 Python이 포함되어 있는지 확인한다.
그리고 HTML element 값중에 q를 찾아서 clear로 초기화 한 다음 "pycon"을 입력하여 정상적으로 검색이 되었는지 확인하는 부분이다.
실제로 코드대로 동작하는지 눈으로 확인하기 위해 중간중간에 time.sleep(5)을 삽입했다. (삽입하지 않을 경우 실행이 너무 빨라서 pycon이 검색 제대로 되었는지 확인불가)
참고로 HTML element name을 확인하려면 브라우저에서 개발자도구(F12)를 선택하여 확인할 수 있다.
출처 : https://selenium-python.readthedocs.io/
'Testing' 카테고리의 다른 글
파이썬 Selenium, unittest framework로 테스트 자동화하기 (0) | 2020.01.13 |
---|---|
SW Testing (소프트웨어 테스트 이론) (0) | 2020.01.11 |
파이썬 Unit Testing Framework (0) | 2019.12.31 |