여기까지 어느정도 따라왔으면, 당신도 어느정도 pytest에 익숙해져있을 것이고 그리고 element를 가져오는 방법에 대해서는 숙달이 되었을 것이다.

자 그럼 본격적인 POM 구조에 대해서 설명하겠다.

앞써 Step 7에서 POM 구조에 대해서 간략하게 설명을 했지만, 어떻게 클래스를 만들고 어떻게 동작 하는지 설명이 없었기에, 오늘은 이것에 대해서 간략하게 도식화를 했다.

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