背景:该实战项目来源于江楚老师编写的《接口自动化测试项目实战》一书,分为两个部分,第一部分是接口自动化测试基础,包含:部署被测系统ZrLog(Docker),Request库,os库,logging库,PyMySQL库,pytest框架的使用;第二部分为构建接口自动化测试框架,应用第一部分的知识对ZrLog项目设计测试用例,搭建接口自动化测试框架,实现接口自动化测试框架的持续集成等。我在这里写下这篇博客是为了记录完成这次实战的过程,以及自己在过程中遇见的一些问题,分享给大家。
实现技术:Docker+Python3.8+Requests+PyMySQL+Navicat+pytest+Jenkins
江楚老师提供了课程源码,讲解PPT以及一部分的录制视频,可在百度网盘自行下载:
江楚老师的源码及ppt下载https://pan.baidu.com/s/1QXlB-J8x4U3Xrt8tRHvI0w?pwd=nmxd
第一部分:接口自动化测试基础
1、 部署被测环境
(1)Docker安装
Docker是一个容器化平台,它允许开发者将应用及其依赖打包进一个轻量级、可移植的容器中,实现应用在不同环境中的快速部署、迁移和扩展,同时保证了环境的一致性和隔离性。
在这里我用的linux系统是wsl2,由于最近docker封掉了很多镜像源,所以我直接下的Docker Desktop,安装和使用教程依照下面这篇博客。
Docker Desktop 安装使用教程-CSDN博客https://blog.csdn.net/GoodburghCottage/article/details/131413312?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b38d42f503c04cf7421e2a5f2f5f607d%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=b38d42f503c04cf7421e2a5f2f5f607d&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-131413312-null-null.142%5Ev100%5Epc_search_result_base6&utm_term=Docker%20desktop&spm=1018.2226.3001.4187 因为镜像源不好用...(主要是我配了以后不知道为什么整个Desktop就崩了),所以我没有按照博客中的那样去配源,直接在Windows上科学上网,不配源,也是可以直接使用Docker Desktop去search 和 pull 的。
(2)通过Docker部署Tomcat
直接在Docker Desktop上方搜索tomcat。
选择tomcat:9,pull下来。在docker终端中(也可以直接在images里面启动,填写配置信息):
docker run -di -p 80:8080 --name=tomcat001 tomcat:9
docker ps -a
若发现给tomcat分配了序列号,并且status为up,即为启动成功。可以通过desktop或者设置的端口号访问页面,看到tomcat的主页,就ok了。如果看不到,就说明要查一下首页是否存在(我恨tomcat),我的解决方法是下面这个博客,原因是webapps里没有内容,将webapps.dist内的内容转到webapps里就ok了。
Docker启动Tomcat容器_docker 启动tomcat-CSDN博客https://blog.csdn.net/m0_59092234/article/details/126642407
(3)通过Docker部署MySQL
这个没踩啥坑,按教程来就可以,就是中间有个语法不匹配问题。同样的pull下来一个Mysql的images,然后启动。
更新:有大坑,在docker desktop里面只有最新版本的mysql,后面在配Pymysql库的时候,这个mysql在连接navicat的时候,可能由于navicat版本过低,发生连接报错“1251”,而这个问题我尝试了很多方法都解决不了,由于我使用的是破解版navicat,不可能去更新navicat,所以存在这样的版本问题。
解决方法:删除原本的pull下来的mysql images,在docker的终端执行(教材里写了指定版本...我以为下最新的报不了错...):这个pull要用VPN,不然报错。
docker pull mysql:5.7
随后正常注册就可以。 如果你不幸装到PyMySQL才发现这个问题,那你需要重新安装一遍zrlog。
将mysql pull下来后,执行:
docker run -di --name=mysql001 -p 33506:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
# 登录Mysql容器
docker exec -ti 5d413a696c30(你自己Mysql的启动后的序列号) bash
# 从容器中登录到MySQL数据库
mysql -uroot -p
123456
# 创建ZrLog系统所需要的数据库
Mysql> create database zrlog;
# 以下这条我执行不了
# 授权一个可远程访问的用户,后期进行数据操作和远程客户端连接
[root@localhost ~] grant all privileges on *.* to root@'%' identi