透過Docker動態的啟動自動化測試需要的測試環境
這篇文章主要說明如何利用 Docker 建構測試需要用的測試環境。
使用Docker 最大的優點是可以即時啟動所需要的測試環境,減少開機的等待時間。
我們主要利用 Selenium GRID 的架構,透過Docker建置測試環境。
Selenium GRID
Selenium GRID 需要三個環境。一個是 Selenium HUB主要用來控制並且佈署測試程式到各個 Node。
另外兩個分別是 Selenium Node (FireFox與 Chrome)
- The Selenium Grid hub
- The Firefox Selenium Grid node
- The Chrome Selenium Grid node
因此,我們會準備三個 Docker Image。
安裝 Docker 於 Ubuntu
首先必須先將Docker 環境安裝設定好。這些步驟只會發生一次性的環境設定。
Ubuntu 環境需求: 64bit is required. 3.8 kernel is recommended.
參考指令如下
- sudo su
- service docker.io status
- uname -a
- apt-get update
- apt-get install -y docker.io
安裝完之後,可以用下列指令確定 Docker是否有安裝成功
- service docker.io status
- docker -v
- docker version
安裝Docker參考資料
https://docs.docker.com/installation/ubuntulinux/
下載 Selenium GRID Docker Images
接著利用下列指令,下載 Selenium GRID 相關 Images
- docker pull selenium/hub:2.45.0
- docker pull node-firefox:2.45.0
- docker pull node-chrome:2.45.0
執行啟動 Selenium GRID
啟動 Selenium GRID HUB
首先我們先啟動 Selenium GRID HUB
- docker run -d -p 4444:4444 –name selenium-hub selenium/hub:2.45.0
- docker ps
- http://127.0.0.1:4444/grid/console
啟動成功之後,用瀏覽器會到下列畫面
啟動 Selenium GRID Node FireFox
接著分別啟動 FireFox Node,與兩個 Chrome Nodes
- docker run -d –link selenium-hub:hub selenium/node-firefox:2.45.0
- docker run -d –link selenium-hub:hub selenium/node-chrome:2.45.0
- docker run -d –link selenium-hub:hub selenium/node-chrome:2.45.0
關閉所有 Docker Containers
如果測試完畢,可以利用下列指令關閉所有的 Running Docker Containers
docker stop $(docker ps -q)
docker rm $(docker ps -qa)
CI 自動化測試流程
一般來說每一次的測試流程會用的指令如下
啟動Selenium GRID Docker Images
- docker run -d -p 4444:4444 –name selenium-hub selenium/hub:2.45.0
- docker run -d –link selenium-hub:hub selenium/node-firefox:2.45.0
- docker run -d –link selenium-hub:hub selenium/node-chrome:2.45.0
執行測試程式,例如 Selenium_Remote_webDriver_Testing.py
- Python Selenium_Remote_webDriver_Testing.py
測試程式執行結束後,關閉Docker Containers
- docker stop $(docker ps -q)
- docker rm $(docker ps -qa)