김빵디

Python+Selenium Unittest 단위테스트 실행해보기(단순) + 파이어폭스 웹드라이버 설치하기(Firefox webdriver install download) 본문

외로운 싸움/Selenium

Python+Selenium Unittest 단위테스트 실행해보기(단순) + 파이어폭스 웹드라이버 설치하기(Firefox webdriver install download)

김빵디 2022. 5. 24. 11:15
728x90

· python Test 란?

- 스크립트를 사용하여 테스트 계획이 실행됨

- 시스템에 대한 자동화된 테스트를 지원하는 도구와 라이브러리와 함께 제공

- 비교적 작성하기 쉬우며, python기반 테스트 자동화 프레임워크 인기

 

· 자동화 프레임워크

- 데이터 기반 테스트 생성

- 테스트 사전조건 및 사후조건 설정

- 예상 및 실제 출력 확인과 같은 테스트 관리 기능

- 보고서 생성 기능

 

[알아두기] 켄트벡(Kent Beck, 미국 소프트웨어 엔지니어) 아저씨가 Smalltalk에서 사용하던 테스팅 프레임웍이 자바로 건너가 JUnit가 되었다. 스티브퍼셀(Steve Purcell)이 JUnit 프레임워크를 기반으로 PyUnit을 구상했다.

 

Python 테스트 도구들은 Pytest.warns(), robotframework, Pytest, unittest, DocTest, Nose2, testify 이 있다. 일단, 나는 Python Unittest 테스트 도구를 사용할 예정이다.

 

· Python Unittest 란?

- 최초의 Python 기반 자동화된 단위테스트 프레임 워크

- Python 표준 라이브러리와 함께 작동함(모듈을 불러와서 import 사용)

ex. import unittest

- JUnit의 영감을 받아 테스트 컬렉션, 테스트 독립성, 테스트를 위한 설정 코드 등을 포함한 테스트 자동화 지원

▲ 파이썬 기본 라이브러리로 별도의 모듈설치가 필요없다.

Unittest : 테스트 자동화, 자동화를 위한 설정 및 종료, 테스트 case 실행 및 실행결과 리포트

① Test Fixture: 테스트 수행시 사전에 필요한 준비와 관련 동작을 실행

ex. 로그인이 필요한 기능에 대한 로그인을 테스트 전에 사전 실행/필요한 데이터 가져오기/폴더생성/DB연결 등

② Test Case: 테스트 개발 단위, 함수 리턴값 및 변수값 확인

③ Test Suite: 테스트 케이스의 집합, 한번에 실행해야 할 테스트들을 종합한 결과

④ Test Runner: 실제 테스트케이스 실행, 테스트 결과를 사용자에게 제공하는 역할의 컴포넌트

 

Unittest 기본 구조

import unittest
 
class MainPage(unittest.TestCase):
  def setUp(self):
    self.driver = webdriver.Firefox()
    ...
   
  def test_main_page(self):
    ...
 
  def tearDown(self):
    ...
    self.driver.close()
 
if __name__ == "__main__":
   unittest.main()

 


준비하기전에 파이어폭스 웹드라이버를 설치한다.

1. 파이어폭스에서 구글을연다

2. 구글에서 '리그오버레전드'를 검색한다.

3. 실행했을경우 테스트를해본다(단순)

 

unittest로 사용하는 이유

각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는지 확인하기 위해!

프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 문제발생시 정확하게 어느 부분이 잘못된지 빨리 확인하기 위해 유닛테스트로 진행한다.


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import unittest

def execution_search():
    pass

#첫번째 Selenium Test 만들기
class one_tc(unittest.TestCase):
    def setUp(self): #전제조건(테스트 시작시 초기화된 값 정리)
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
       
        self.driver.get("http://www.google.com")
   
    def test_search_by_test(self):
        self.search_field = self.driver.find_element_by_name("q")
       
        self.search_field.send_keys("리그 오브 레전드")
        self.search_field.submit()
       
        execution_search()
        #메소드 단순 실행여부 판단

   
    #@classmethod
    def tearDown(self): #코드 해제
        self.driver.quit()  

   
if __name__ == '__main__':
    unittest.main()
    #실제 코드를 통해 테스트 수행
   

("q")로 검색해서 len(lists)뽑는게있는데 아직 완벽하게 이해가되지않아서 단순하게 실행여부에 대해서 시도해봤다.

 


 

▼ 파이어폭스 웹드라이버 쉽게 설치하는방법 따라해보기


[파이어폭스 웹드라이버 설치]

1. https://www.selenium.dev/downloads/

 

Downloads

Selenium automates browsers. That's it!

www.selenium.dev

셀레니움 홈페이지에 접속해서 스크롤을 내리다보면

노란색으로 표기된 'documentation'이 있다. 클릭해서 현재 버전에 맞는 웹드라이버를 설치해주면 끝!

geckodriver 릴리스 클릭해서 버전에 맞는 릴리스를 다운받자

나는 100.0.2

사용하고있는 운영체제에 맞게 다운로드를 해주고 압축을 풀어서 파일 내부에 끌어넣기!

 

 

[참고문서]

https://www.techbeamers.com/selenium-python-test-suite-unittest/

https://kibua20.tistory.com/226

728x90