Selenium 실전편 Part 02
#
Selenium - 007 - Selenium 실전편 Part 02이 글에서 예시로 사용되는 정보는 다음과 같다.
- Python 3.7.7
- Selenium 3.141.0
- Pytest 6.2.1
목차
- 임의의 사이트 선정 및 자동화할 영역, 기능등에 대한 범위 선정
- 테스트 자동화 스크립트의 형상관리 & POM 구조 작성
- 로케이터 및 페이지 작성
- 자동화 스크립트 작성 (테스트 케이스, 테스트 시나리오)
#
1) 테스트 자동화 스크립트 형상관리테스트 자동화 스크립트 역시, 형상관리가 필요하다. 여러명이 협업하여 작성하는 경우도 있거니와
test, dev, master 같은 개발 브랜치 전략이 존재한다면 그에 따른 테스트 데이터 셋이나 여러 정보 또는
각 브랜치와 연동되어 있는 서버에 따라 테스트 범위가 달라질 수도 있기 때문이다.
상세한 내용은 추후 다시 다루도록 한다.
#
2) POM 구조 작성이전에 설명한 POM 구조를 여기에서도 적용 해보고자 한다.
이전글 Page Object Model (POM) 은 개념을 설명하고자 Google 예시로 든 것이고 필자는 다른 형태의 POM 구조를 선호 한다.
어차피, POM 이라는 개념은 동일하고 구조만 필자 편할대로 하는거라 크게 신경 쓸 필요는 없다.
필자는 하기 예시와 같은 방법으로 POM 구조를 구성하여 테스트 자동화를 구축하고 있다.
POM 구조 예시
Config : 공통으로 사용하는 정보를을 모아 놓는 폴더라고 생각하면 될것 같다. 주로 계정정보, 사이트정보, 공통적으로 사용하는 정보가 있다.
Drivers : Selenium 에서 사용되는 Driver 를 한곳에 모아 둔다. 추후 설명 하겠지만, pytest 에서 @fixture 를 사용하기 위해 만들어 두었다.
Locator : 각 테스트 범위 페이지를 하나로 엘리먼트들을 정의 하지 않고, 분할하여 각 영역 또는 페이지 별로 엘리먼트를을 관리하기 위한 폴더이다.
Pages : 추후, Locator 폴더에서 해당하는 엘리먼트에 대한 테스트 진행 시, 각 페이지에 대한 공용 함수를 쓰기 위한 폴더라고 생각하면 된다. 기본적으로 Base 에는 전체적으로 사용하는 공요 함수를 만들고 각 페이지 별로 해당 페이지에서만 사용하는 함수를 만들어 두는것이 편하다.
예를들어, Base 에는 Locator 의 엘리먼트 유무를 판단하는 함수를 만들어 모든 테스트 케이스에서 호출을 하는 용도이고, Page_ .. 에는 각 페이지 별로 특별하게 사용하는 기능들을 함수로 만들어 해당 페이지에서만 호출하여 사용한다.
Tests : 실제 테스트 스크립트를 작성하는 폴더라고 생각하면 될 것 같다.
전체적인 흐름을 설명하자면,
Tests 폴더의 test.py 에는 Config 에 선언된 정보 (ID/PW 또는 URL 또는 데이터 정보) 를 불러오고 @pytest.fixture 심볼릭 드라이버 정보를 수행하여 각 Locator 에 정의된 엘리먼트들을 Pages 에 정의된 함수들을 호출하여 TEST 를 진행하게 된다.
작성자 : 현의노래
작성일 : 2021년 10월 29일