ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toDevOps
์๋ฌธ ์ฝ๊ธฐ
Pytest์ POM ๊ธฐ๋ฐ์ ํ์ฅ ๊ฐ๋ฅํ Test Automation ์ค๊ณ
๐งช Selenium with Python: A Practical Cheat Sheet for Modern Test Automation
AI ์์ฝ
Context
๋จ์ํ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ํ ์คํธ์ ๋ฎ์ ์ ์ง๋ณด์์ฑ๊ณผ Flaky Test ๋ฐ์ ๋ฌธ์ ๋ถ์. ๋จ์ํ ๋๊ตฌ ํ์ฉ์ ๋์ด CI ํ๊ฒฝ์์ ๋์ํ๋ ์์ ์ ์ธ ํ ์คํธ ํ๋ ์์ํฌ์ ํ์์ฑ ๋๋.
Technical Solution
- Page Object Model(POM) ๋์ ์ ํตํ UI ์์์ ํ ์คํธ ๋ก์ง์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ
- Explicit Wait ์ ์ฉ์ผ๋ก ๋์ ์์ ๋ก๋ฉ ๋๊ธฐ ์๊ฐ์ ์ต์ ํํ์ฌ Test Flakiness ์ ๊ฑฐ
- Pytest Fixture๋ฅผ ํ์ฉํ WebDriver ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ๋ฐ Setup/Teardown ์๋ํ
- Headless Mode ์ค์ ์ ํตํ CI ํ์ดํ๋ผ์ธ ๋ด ๋ฆฌ์์ค ์ต์ ํ ๋ฐ ์คํ ์๋ ํฅ์
- Pytest Marker๋ฅผ ํ์ฉํ Smoke Test ๋ฑ ํ ์คํธ ์ค์ํธ์ ๊ณ์ธต์ ๋ถ๋ฆฌ ๋ฐ ์คํ ์ ์ด
- pytest-html ํ๋ฌ๊ทธ์ธ์ ํตํ ํ ์คํธ ๊ฒฐ๊ณผ์ ์๊ฐํ ๋ฐ ๋ฆฌํฌํ ์ฒด๊ณ ๊ตฌ์ถ
์ค์ฒ ํฌ์ธํธ
- time.sleep() ์ฌ์ฉ์ ์ง์ํ๊ณ WebDriverWait ๊ธฐ๋ฐ์ Explicit Wait ์ ์ฉ ์ฌ๋ถ ํ์ธ - ID, Name, CSS Selector ์์ ์์ ์ ์ธ Locator ์ฐ์ ์์ ์ ๋ต ์๋ฆฝ - ๋ฐ๋ณต๋๋ UI ์ํธ์์ฉ์ Page Object ํด๋์คํ ํตํ ์ฝ๋ ์ค๋ณต ์ ๊ฑฐ - CI ํ๊ฒฝ ์ต์ ํ๋ฅผ ์ํ Headless ์ต์ ๋ฐ Window Size ๊ณ ์ ์ค์ ์ ์ฉ