在工作中遇到了一些场景不方便测试,例如:与第三方合作,未联调时就需要提前介入测试我方的接口;app上有调用到第三方的接口;接口的前置场景的接口不易于执行到。于是,今天学习了如何使用mock,在测试过程中,对于某些不容易构造或者第三方的接口,创建一个虚拟的接口以便测试的方法。
学习了两种方式:
第一种是使用easy mock(这种方式适合于服务器端调用):
1、官方地址是https://easy-mock.com/ 首先创建一个项目,然后创建一个接口,填写请求方法,url,接口返回值,在填写url时与实际接口上的url一致。创建成功后,可复制接口地址到post上执行,可执行成功,并响应出所填写的接口返回值。这时候mock就创建好了。
2、再到实际所测的开发项目中将spring-config.properties文件中地址设置为本地,例如项目名称是test,则设置为:url.test=http://localhost:8080/test
在本地启动项目。
3、如果测试对象是接口,以上步骤就已经可以成功使用mock了;如果测试对象是app,可以使用charles连上手机代理,再在charles上设置:Tools -》Map Remote -》勾选Enable Map Remote -》设置Map From为项目原来的地址,设置Map To为localhost的地址。设置成功后,在app上操作时,使用的就是本地的代码。(当然,也可以使用fidder)
第二种是使用moco的jar包(这种方式适合于本地调用,可模拟单个接口):
1、下载jar包:moco-runner-0.9.2-standalone.jar
2、 将要mock的接口内容写成json文件,例如payment.json文件,里面mock两个接口,写法如下:
[ { "request": { "uri": "/baofoo", "queries": { "param": "pay" } }, "response": { "json":{"biz_type":"0000", "resp_code":"BF00113", "txn_type":"0431" } } }, { "request": { "uri": "/yee", "queries": { "param": "validation" } }, "response": { "json": { "codesender":"CUSTOMER", "enhancedtype":"abc", "errorcode":"TZ1001033" } } }]
3、执行语句:
java -jar moco-runner-0.9.2-standalone.jar start -p 12306 -c payment.json
(-jar是执行后面的jar包,start -p设置端口号,-c指定json文件)
4、在本地开发项目中设置spring-config.properties,内容为
bf.requestUrl=http://localhost:12306/baofoo?param=pay
5、到postman中或者浏览器中进行验证,输入http://localhost:12306/baofoo?param=pay。可得到响应值:
{ "json":{"biz_type":"0000", "resp_code":"BF00113", "txn_type":"0431" } }
详细使用参见文章:接口服务模拟Mock Server之moco-runner详细使用