搭建接口自动化测试课程中的被测系统『Docker篇』

作者: TT 分类: 技术 发布时间: 2019-12-25 09:00

参加过我们Python接口自动化测试的同学都知道,在实战中,我们使用的是一个电商管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。是现阶段比较流行的技术实现的。也是目前大部分公司都在使用的,同时也引入了文档生成工具Swagger-UI,使用Swagger查看接口文档在公司也越来越常见。



Docker得到越来越广泛的应用,那么对于我们测试人员,一些Docker相关知识及命令也要掌握,今天这篇文章,先介绍下Docker相关知识,希望对大家有些帮助。

一、Docker简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,使用Docker可以更方便的打包、测试及部署应用程序。

二、Docker环境安装

1、安装yum-utils:

yum install -y yum-utils device-mapper-persistent-data lvm2

2、为yum源添加docker仓库位置:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3、安装docker:

yum install docker-ce

4、启动docker:

systemctl start docker

三、Docker常用命令

在docker hub官网:https://hub.docker.com
查看镜像支持的版本,然后下载镜像:
比如下载java镜像:

docker pull java:8

下载nginx镜像:

docker pull nginx:1.10

列出镜像:

docker images


删除指定名称镜像:

docker rmi java:8

强制删除指定名称镜像:

docker rmi -f java:8

强制删除所有镜像:

docker rmi -f $(docker images)

新建并启动容器(以nginx为例):

docker run -p 80:80 --name nginx -d nginx:1.10

# -d:表示后台运行
# --name:制定运行后容器的名字为nginx,之后可以通过名字来操作容器
# -p:指定端口映射,格式为:hostPort:containerPort

列出运行中的容器:

docker ps

列出所有容器:

docker ps -a

停止容器:

docker stop $ContainerName(或者$ContainerId)

比如停止nginx:

docker stop nginx  或 docker stop 725e081ad097

强制停止容器:

docker kill $ContainerName(或$ContainerId)

启动已停止的容器:

docker start $ContainerName(或$ContainerId)

进入容器(先查出容器的pid,然后再根据容器的pid进入容器):

# 先查出容器的pid
docker inspect  --format  "{{.State.Pid}}"  $ContainerName(或者$ContainerId)
# 然后再根据容器的pid进入容器
nsenter --target “$pid” --mount --uts --ipc --net --pid

删除指定容器:

docker rm $ContainerName(或$ContainerId)

强制删除所有容器:

docker rm -f $(docker ps -a -q)

查看容器的日志:

docker logs $ContainerName(或$ContainerId)

查看容器的ip地址:

docker inspect --format '{{.NetworkSettings.IPAddress}}' $ContainerName(或$ContainerId)

查看指定容器cpu、内存、网络、io情况:

docker stats $ContainerName(或$ContainerId)

查看所有容器情况:

docker stats -a

进入docker容器内部的bash:

docker exec -it $ContainerName(或$ContainerId) /bin/bash

四、Docker的出现对测试也带来了一些促进作用

1、环境的统一

在 Docker 下我们不用再纠结多套环境运维、管理的问题,也更加不用考虑不同环境之间的差异。 Docker 完全可以快速的部署一套清洁的环境,供我们进行各项软件生命周期活动。

2、降低配置的压力

很多时候应用会依赖于很多配置,比如数据库、防火墙、队列、缓存等等,Docker 呢,就可以通过打包镜像,将这些配置一起打包到镜像中,也进一步保证了环境的统一。

3、资源利用

由于容器不需要进行硬件模拟、也不需要运行完整的操作系统,所以容器的执行速度、内存消耗都要比虚拟机更高效,性能也更好。

4、问题的复现

传统的环境配置里,生产上的问题往往很难在测试环境重现,让我们在 BUG 复现上会耽误太多的时间,更难定位问题出现的原因。而 Docker 的特殊性就在于可以快递通过镜像复制出现问题的场景,更快速的定位分析问题。同样的,在对于测试与开发的沟通上亦是如此。

5、持续集成的支持

传统的持续集成还是停留在应用方向,而配合 Docker,通过 Docerfile 来进行镜像构建,效果更好。

6、环境的迁移

我们经常遇到某些环境的迁移,比如机房的迁移、平台的迁移等等。传统情况下我们的部署、迁移和迁移后的测试是一个非常大的工程,而有了 Docker,基于 Docker 的兼容性,可以很轻松的进行迁移。

由此可见,Docker让我们变得更加高效。好了,Docker篇今天就介绍到这里,希望对你能有所帮助。

####最后,给我们自己打个广告:Python接口自动化二期实战课程报名12月31号马上就要截止了,只要认真学习,能够基于自己公司项目进行接口自动化测试的应用和落地那都不是问题。名额不多了,请联系微信:alice_in_1988咨询并领取大额优惠券。