Mock的理解
(1)mock概念
在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为
(2)常见的mock方式
将模拟数据直接写在代码里
利用 JavaScript 拦截请求
利用 Charles、 Fiddler 等代理工具拦截请求
正常来说,在开发阶段,尤其是联调之前,Mock经常被开发人员用来进行调试
(3)为什么说mock可以用在测试工作中呢?
在测试过程中,想直接检验纯前端或纯移动端功能时,但是服务端接口返回的数据很难制造,那么可以使用mock快速构造数据
(4)如何使用?
1. 生成Mock服务端接口(Easy Mock可使用在线,也可自行搭建,建议自行搭建)
2. 抓包工具fiddler 拦截请求,替换返回数据
搭建Easy Mock
(1)环境准备
linux环境(文章介绍的是centos7)
(2)安装软件
Node.js(v8.x)
wgethttp://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.gz
tar -zxvfnode-v8.11.1-linux-x64.tar.gz
mvnode-v8.11.1-linux-x64 node
cd node/bin && ls
vim~/.bash_profile
找到PATH=$PATH:$HOME/bin,在后面添加路径:/usr/local/src/node/binsource ~/.bash_profile
为npm添加淘宝镜像和cnpm
npm config set registryhttps://registry.npm.taobao.org
npm config get registry
npm install -g cnpm--registry=https://registry.npm.taobao.org
MongoDB(>= v3.4)
下载地址:https://www.mongodb.com/downloadcenter/community
安装网络组件
yum install net-tools
创建文件夹
cd /usr/local/
mkdir mongodb
解压:tar -xzvf mongodb-linux-x86_64-4.0.6.tgz
设置环境变量:
vi /etc/profile
exportMONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
source /etc/profile
创建数据库文件和日志
cd /usr/local/mongodb
mkdir -pdata/db
chmod -r 777 data/db
mkdir logs
cd logs
touch mongodb.log
创建启动文件
cd /usr/local/mongodb/bin touch mongodb.conf vimongodb.conf
在文件中插入如下内容
dbpath=/usr/local/mongodb/data/db #数据文件存放目录 logpath=/usr/local/mongodb/logs/mongodb.log #日志存放目录 port=27017 #端口 fork=true #以守护程序的方式启用,即在后台运行
启动数据库
cd /usr/local/mongodb/bin.
/mongod --config mongodb.conf

启动后,浏览器直接访问xxxx:27017,出现下图即安装成功

若发现只能本地连接不能远程连接:
将bind_ip = 127.0.0.1 改成 bind_ip =0.0.0.0
Redis(>=v4.0)
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar -zxvf redis-4.0.6.tar.gz
yum install gcc
cd redis-4.0.6
make MALLOC=libc
cd src && make install
如何启动redis
修改redis.conf文件
将 daemonize no 修改为 daemonize yes
./redis-server/usr/local/redis-4.0.6/redis.conf
设置redis为开机启动
参考:https://www.cnblogs.com/zuidongfeng/p/8032505.html
mkdir redis
cp/usr/local/redis-4.0.6/redis.conf /etc/redis/6379.conf
cp/usr/local/redis-4.0.6/utils/redis_init_script /etc/init.d/redisd
chkconfig redisd on
service redisd start
(3)下载项目
https://github.com/easy-mock/easy-mock
直接git下拉项目代码:
git clonehttps://github.com/easy-mock/easy-mock.git
若出现报错:SSL connect error
git config –globalhttp.sslversion tlsv1
下载成功后,进入/easy-mock
1. npminstall
若npm install总是报错:unable to verifythe first certificate
取消ssl验证:npm config set strict-sslfalse
2. 找到 config/default.json,配置可以自行修改
3. 启动
npm run build
npm run start
4. 使用 PM2 来守护你的应用进程
npm install pm2 -g
NODE_ENV=production pm2 start app.js
5. 浏览器打开 xxxx:7300就可以看到下图了
关于easy mock 怎么使用,可以参考:https://www.easy-mock.com/docs

使用Easy Mock,模拟接口返回数据
(1)根据Api文档,获取到某抽奖接口的返回格式如下:
{
"success": true,
"data": {
"coupon_code":"38120a",
"count":"1",
"msg":"Congratulations!You received one coupon!"
}
}
或
{
"success": false,
"data": {
"msg":"You haveget one coupon before!"
}
}
(2)本身抽奖获得的测试,就需要测抽奖接口和抽奖成功or失败的前端展示效果
假如前端展示有样式优化或问题等,需要单独验证时,那么就可以直接模拟成功或失败的数据
拦截接口后让前端显示对应的效果
但是本文没办法直接展示该效果(涉及内容接口),所以就以百度为例子
(3)创建项目--创建接口--编辑接口
左边复制接口返回的数据内容
右边填写url 和描述
点击保存即可
点击复制链接

浏览器打开链接,看到是可以返回需要的数据的

使用fiddler拦截接口,篡改返回数据
(1)fiddler--AutoResponder -- Add Rule

(2) 添加需要的拦截的接口

(3)开启拦截,把下方三个都勾选上

(4)尝试着打开百度,发现已经变成mock的接口了

看下百度页面是如何的,已经代理到mock的接口了

当然easy mock还可以设置随机返回的数据,支持RESTful
- END -

性能测试28期
3月23日(周六)正式开班!
测试开发五期
3月23日(周六)正式开班!
自动化测试16期
3月23日(周六)正式开班!
欢迎加入我们:
慧测官网:www.huicewang.com
慧测Python群:324015481
公开课服务群:623636110
咨询QQ:2657535456
咨询微信号:huice66

慧测腾讯课堂 课程地址:



