여기까지 어느정도 따라왔으면, 당신도 어느정도 pytest에 익숙해져있을 것이고 그리고 element를 가져오는 방법에 대해서는 숙달이 되었을 것이다.
자 그럼 본격적인 POM 구조에 대해서 설명하겠다.
앞써 Step 7에서 POM 구조에 대해서 간략하게 설명을 했지만, 어떻게 클래스를 만들고 어떻게 동작 하는지 설명이 없었기에, 오늘은 이것에 대해서 간략하게 도식화를 했다.
POM 의 기본 구조
일단 크게 세가지의 Package를 구성된다.
(* 패키지라는 것은 파이선의 모듈을 관리하는 구조 중 Package라고 있고, 그것을 이용해서 각 항목을 관리를 한다)
Driver Package : 웹/앱 드라이버 정보 포함
Tests Package : 테스트 슈트를 만듬
Page : 각 테스트 슈트 항목을 서비스 구현
이것을 코드로 정리하면 다음과 같다.
# Driver Package 에 있다는 가정 하에 webdriver 셋팅
import pytest
from selenium import webdriver
class Setting:
@pytest.fixture(autouse=True)
def set_up(self):
options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', True)
driver = webdriver.Chrome(executable_path='chromedriver')
print("WEB Test is started")
self.driver.maximize_window()
self.driver.get("<https://www.naver.com>")
yield self.driver
if self.driver is not None:
print("Tests is fininsed")
self.driver.close()
self.driver.quit()
# Test Package 에 있다는 가정 하에 셋팅
import pytest
from Base.webdriver import Setting
from Pages.frontpage import loginpage
from
# 해당 클래스는 Web_setting을 상속을 받아야함
# 테스트 Suite 작성
class test_front(Setting) # <-- Web_Setting 상속
# 테스트 Case 작성
def test_login(self):
login = Loginpage(self.driver) # 상속을 받은 driver를 사용
# test_step 작성
login.submit_login()
# Page Package 에 있다는 가정 하에 셋팅
import pytest
class loginpage:
def submit_login(self):
# xpath로 element 찾기
login_btn = self.driver.find_element_by_class_name("link_login").click()
login_id = driver.find_element_by_xpath("//input[@name='id']")
login_pw = driver.find_element_by_xpath("//input[@name='pw']")
# id와 pw 입력
login_id.send_keys("id")
login_pw.send_keys("pw")
자 다음과 같이 POM 구조를 사용한 테스트 케이스 작업이 끝났다.
그럼 이것을 실행을 시키면 Pass, fail을 확인할 수 있다.
pytest test_login.py