Devops关键工具及技术(六)—基于Pipeline的Web自动化测试[二](Web自动化测试工具容器化)

在之前的五篇文章中,我们介绍了从Git、Maven、Junit、SonarQube、Sh等工具及技术介绍了从持续集成到静态代码扫描再到简单的部署。基本可以满足了我们在基础开发过程的流水线。

之前的文章链接见下:
Devops关键工具及技术(一)—Jenkins 容器化
Devops关键工具及技术(二)—Jenkins2.0 Pipeline
Devops关键工具及技术(三)—基于Pipeline的Git+Maven+Junit持续集成
Devops关键工具及技术(四)—基于Pipeline的SonarQube静态代码扫描
Devops关键工具及技术(五)—基于Pipeline的Bash脚本部署

接下来,我们将介绍在流水线中加入测试相关的功能,如Web自动化测试、性能测试这些测试流水线。Web自动化测试加入到流水线中,将会用三篇文章进行介绍。在Web自动化测试的框架中将会选用RobotFramework+Selenium2Library。三篇文章分别是Windows下Web自动化测试工具安装、Web自动化测试工具的容器化、Web自动化测试的流水线集成。

本篇我们将介绍Web自动化测试工具的容器化。
以下所有的文件代码都可以在Github找到:
https://github.com/zbbkeepgoing/containerization

1、容器化

Web自动化工具容器化是为了我们能够将Wen自动化加入到我们的Jenkins中成为一个 节点,这样Web的自动化测试将会很容易地集成到我们pipeline流水线中。并且容器化后自动化测试的工具部署将会变得非常简单,只需要部署一个容器即可以进行自动化的测试。
下面就是Web自动化测试的Dockerfile文件

FROM ubuntu:16.04    //基础镜像

ENV http_proxy http://192.168.88.130:8118    //配置代理,无需代理的可以去掉
ENV https_proxy http://192.168.88.130:8118     //配置代理,无需代理的可以去掉

RUN apt-get update && apt-get install -y --no-install-recommends \
 python \
 python-pip \
 unzip \
 libx11-6 \
 libnss3 \
 libfontconfig1 \
 libgconf2-4 \
 wget \
 git \
 openjdk-8-jdk \
 && rm -rf /var/lib/apt/lists/*      //安装必要软件包



RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -;\
    echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list 
RUN apt-get update && apt-get -y remove google-chrome-stable  && apt-get install -qy google-chrome-stable    //安装google浏览器稳定版
RUN pip install --upgrade pip  //更新pip
RUN pip install --upgrade setuptools   //更新setuptools
RUN pip install robotframework  //安装robotframwork
RUN pip install robotframework-seleniumlibrary   //安装seleniumlibrary   
RUN pip install robotframework-faker   //安装robotframework-faker
RUN wget  https://chromedriver.storage.googleapis.com/2.42/chromedriver_linux64.zip; \
    unzip chromedriver_linux64.zip; \
    rm -rf chromedriver_linux64.zip; \
    mv -f chromedriver /usr/local/bin/chromedriver;    //安装google浏览器驱动
RUN pip install robotframework-selenium2library   //安装selenium2library   
ENV http_proxy ""   //取消代理
ENV https_proxy ""   //取消代理

根据Dockerfile镜像Docker的构建。

 docker build -t robot:latest .

构建完成后运行

docker run --name robot -it -d robot:latest

测试

  • 测试工具是否都已成功安装
[root@localhost ~]# docker exec -it e8c2eb006383 sh
# google-chrome --version
Google Chrome 69.0.3497.100 
# robot --version
Robot Framework 3.0.4 (Python 2.7.12 on linux2)
# 
# chromedriver --version 
ChromeDriver 2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac)
# 
  • 测试Baidu的Demo自动化Web脚本

脚本可以在这里找到:https://github.com/zbbkeepgoing/containerization/blob/master/RobotFramework/sample.robot

该脚本与上一篇文章中的脚本不太一致,主要原因是容器化后Google浏览器将无法进行可视化得进行调用,因为在容器里面。所以我们需要采用headless模式进行运行Google浏览器

*** Settings ***
Library           Selenium2Library

*** Test Cases ***
Baidu
    Open Headless Chrome    https://www.baidu.com   
    Wait Until Page Contains    baidu
    Close Browser

*** Keywords ***
Open Headless Chrome
    [Arguments]    ${url}
    ${chrome_options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${chrome_options}    add_argument    no-sandbox
    Call Method    ${chrome_options}    add_argument    headless
    Call Method    ${chrome_options}    add_argument    disable-gpu
    Create Webdriver    Chrome    chrome_options=${chrome_options}
    Go To    ${url}

进入容器进行测试

[root@localhost RobotFramework]# docker cp /root/containerization/RobotFramework/sample.robot e8c2eb006383:/opt
[root@localhost RobotFramework]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e8c2eb006383        robot:latest        "/bin/bash"         23 hours ago        Up 23 hours                             robot
[root@localhost RobotFramework]# docker exec -it e8c2eb006383 sh
# cd /opt
# ls
google	sample.robot
# pybot -d /opt sample.robot
==============================================================================
Sample                                                                        
==============================================================================
Baidu                                                                 | PASS |
------------------------------------------------------------------------------
Sample                                                                | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output:  /opt/output.xml
Log:     /opt/log.html
Report:  /opt/report.html
# 

以上即是Web自动化测试工具容器化的内容,后面将会利用容器化后的镜像与Jenkins、Pipeline结合进行Web自动化测试的集成

你可能感兴趣的:(Devops)