기존의 UI 자동화 테스트 케이스에 Selenium Hub 연결

정태경·2022년 6월 5일
0
post-thumbnail
post-custom-banner

지난 게시글에서 Docker를 활용하여 Docker 네트워크를 구성했고, 이어서 Selenium Hub와 Node 컨테이너를 구성했었다. 이번 게시글에서는 어떻게 병렬 테스트를 수행할 수 있는지, 그리고 테스트 코드에서 Selenium Hub 컨테이너에 어떻게 연결할 수 있는지 간략하게 기록해 볼 예정이다.

테스트 코드의 웹 드라이버 설정

테스트 코드에서 Selenium 컨테이너에 접근하는 방법은 매우 간단하다.

이전 게시물에서 grid라는 이름의 docker 네트워크를 구성했고, 이 네트워크에 Selenium Hub 컨테이너와 Selenium Node 컨테이너를 실행했었다. 이 과정을 통해 내 PC의 웹 브라우저에서 http://localhost:4444/ URL을 통해 Selenium Hub에 접근할 수 있었는데, 테스트 코드에도 이 내용을 반영해 주면 된다.

변경 전 코드 (AS-IS)

코드로 비교해 보자. 우선 기존의 테스트 코드이다.
기존의 테스트 코드에서는 ChromeDriverManager를 통해 Webdriver를 세팅해 주고 있었다.

import unittest

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


class BaseTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument("--headless")
        cls.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) # Webdriver 세팅 코드

    @classmethod
    def tearDownClass(cls) -> None:
        cls.driver.quit()

변경 후 코드 (TO-BE)

그리고 아래 코드는 Selenium Hub에 연결한 코드이다.
기존의 코드와 비교해 보면 webdriver.Remote 객체를 통해 원격 서버에서 실행할 수 있는 웹 드라이버를 세팅하고 있고, 매개변수로 Selenium Hub의 URL을 넘겨주어 접근할 수 있도록 제공해 주고 있다.

import unittest

from selenium import webdriver


class BaseTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument("--headless")
        chrome_options.set_capability('browserName', 'chrome')
        cls.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', options=chrome_options) # Webdriver 세팅 코드

    def setUp(self) -> None:
        pass

    def tearDown(self) -> None:
        pass

    @classmethod
    def tearDownClass(cls) -> None:
        cls.driver.quit()

테스트 실행

Selenium Hub, Selenium Node 컨테이너가 실행되어 있는 상태에서 테스트 코드를 실행시켜보면 원격 서버의 웹 드라이버로 UI 자동화 테스트가 수행되는 것을 확인할 수 있다.

그리고 테스트가 수행되는 동안 Selenium Hub에 접속해서 확인해 보면 Selenium Node가 실행되고 있는 것을 확인할 수 있다.

profile
두나무 업비트 QA 엔지니어
post-custom-banner

0개의 댓글