在devops模式下让我们不得不对CICD进行重视,如何在服务容器化的部署方式下引入自动化测试即是关键。
目标:docker+selenium+python完成分布式UI自动化
基本思路:
①测试运行的浏览器环境是关键,能支持多线程分布式测试非selenium grid不可,试试开源容器镜像 dosel/zalenium
②单独给测试代码做1个容器,使用dockerfile构建成镜像,注意:提前准备私有仓库的基础镜像,基础镜像就包括我们所需的必要依赖
③从自动化测试容器里剥离出allure服务,使用开源容器镜像frankescobar/allure-docker-service/ui能更优美的查看allure报告
接下来开工:
1. 在基础镜像上简单编译
构建自动化测试代码的镜像
FROM xxxxxxxxxxx ADD . autotest ENV INSTALL_PATH /autotest WORKDIR $INSTALL_PATH COPY . . EXPOSE 8000 RUN pip install -r requirements.txt CMD ["/bin/bash"] #CMD python run.py
2. 编写docker-compose.yaml部署浏览器运行环境容器、allure容器、自动化测试容器
# yaml配置 version: '3' services: autotest: build: ./ volumes: - ${PWD}/report/allure_result:/autotest/report/allure_reslut links: - zalenium:zalenium depends_on: - zalenium cap_add: - ALL entrypoint: > /bin/sh -c ' sleep 6; echo "start autotest"; python run.py; ' container_name: autotest stdin_open: true tty: true privileged: true zalenium: volumes: - /var/run/docker.sock:/var/run/docker.sock - /tmp/videos:/home/seluser/videos ports: - 4444:4444 image: dosel/zalenium container_name: zalenium privileged: true stdin_open: true tty: true command: - start allure: image: "frankescobar/allure-docker-service" environment: CHECK_RESULTS_EVERY_SECONDS: 1 KEEP_HISTORY: 1 ports: - "5050:5050" volumes: - ${PWD}/report/allure_result:/app/allure-results - ${PWD}/report/allure_html:/app/default-report user: root allure-ui: image: "frankescobar/allure-docker-service-ui" environment: ALLURE_DOCKER_PUBLIC_API_URL: "http://127.0.0.1:5050" ALLURE_DOCKER_PUBLIC_API_URL_PREFIX: "" ports: - "5252:5252"
3、docker-compose up启动,启动即运行测试代码
........
autotest | E AssertionError: 页面没有找到:验证码登s录 autotest | autotest | base/Basepage.py:107: AssertionError autotest | ------------------------------ Captured log call ------------------------------- autotest | ERROR musen:handle_decorator.py:77 用例--test_verfiycodelogin--描述:验证码登录,错误手机号---断言失败 autotest | DEBUG musen:handle_decorator.py:78 用例信息:{'title': '验证码登录,错误手机号', 'mobile': 'xxxxxxxxx', 'code': 'xxxxxx', 'exp': '验证码登s录'} autotest | INFO musen:handle_decorator.py:79 【预期VS实际】: 页面没有找到:验证码登s录 autotest | testcase/test_login.py ⨯ 100% ██████████ zalenium | 07:14:10.303 [http://172.28.0.7:40001] INFO d.z.e.z.p.DockerSeleniumRemoteProxy - Session bd51363c-7830-44e2-a182-11be08141fa3 completed. Node should shutdown soon... autotest | =========================== short test summary info ============================ autotest | FAILED testcase/test_login.py::TestLogin::test_verfiycodelogin[验证码登录,错误手机号] autotest | autotest | Results (28.11s): autotest | 1 passed autotest | 1 failed autotest | - testcase/test_login.py:24 TestLogin.test_verfiycodelogin[验证码登录,错误手机号] allure_1 | Detecting results changes for PROJECT_ID: default allure_1 | Automatic Execution in Progress for PROJECT_ID: default... allure_1 | Creating history on results directory for PROJECT_ID: default ... allure_1 | Copying history from previous results... allure_1 | Creating executor.json for PROJECT_ID: default allure_1 | Generating report for PROJECT_ID: default autotest exited with code 0
4、查看allure报告----访问localhost:5252
写在最后
还在朝着使用k8s批量执行测试用例学习中~~~
(备注:k8s的视频看起来头大)