postman微信公众号接口测试

JavaScript013

postman微信公众号接口测试,第1张

1、拿到api接口文档:熟悉接口业务、接口地址、鉴权、入参、出参、错误码

2、接口测试计划和方案:正例、反例、分页异常

3、编写用例和评审

4、执行接口测试

5、输出接口测试报告

在企业中做接口测试是不会把参数写死过去的

时间戳:

生成0-100的随机整数:

生成一个GUID的字符串:

一个接口中可能存在多个环境如:开发、测试、生产环境

环境和globals都是全局变量

多个接口之前都是有相互关联的

如:注册之后就是登陆,一个业务增删改查不可能一个接口一个接口测

如果一个参数可能从新增到修改再到删除D都是关联,则需要在第一个接口先去获取到,然后在下面接口使用时可以调用

可以在Tests界面上使用

1、json提取器

2、正则表达式提取器

3、cookie提取器

精确断言: 如果需要精确断言的,即这个是个变量,可以提取获取到值,保存到一个全局变量中,并通过获取全局变量来进行断言

一般是在这个Pre-request Script界面上

全局断言: 就是所有接口都用到这个断言

一般用于状态断言

你在wx.config时,打开调试模式,自己测试测试,在调试模式下,都会alert信息出来,看看alert出来的是什么信息。

具体解决步骤如下:

1、登录你的微信平台,点击“公众号设置”。

2、点击“功能设置”,然后点击“设置”。

3、设置JS接口安全域名。这里填写的是一级域名,不带www和http。最多可以设置三个域名。设置完后点击确定。

4、在开发者中心中获取你的AppID和AppSecret,接下来在获取令牌时,需要这两个信息。

5、获取令牌。

6、获取jsapi的ticket。

7、签名,将jsapi_ticket、noncestr、timestamp、分享的url按字母顺序连接起来,进行sha1签名。

这是我第一次公众号开发,本以为看着微信官方文档直接复制粘贴就好了,没想到是我天真了,爬过一个坑又入一个坑!就这么一个简单的事,竟然搞了一下午,所以写了这篇文章,希望可以帮到大家!

第一步:引入 weixin-js-sdk

直接在 html 文件内,使用 script 引入:

或者

第二步:权限验证配置

timestamp,nonceStr,signature 重要信息请根据自己的公众号信息去获取。需要注意的是 debug 调试的时候,设置为 true ,会自动弹出配置成功或失败信息,调试时可以借助它。

第三步:调用扫一扫接口

我们在需要的按钮处,点击事件处开始调用扫码接口,如:

做了一个判断处理,检查只有微信浏览器,其他浏览器不可以调用:

第四步:真机测试

真机测试的时候,一直在提示:

errMsg:config:invalid signature

中文叫做签名无效。

查找原因是因为我的签名获取来和官方 微信 js 接口签名校验工具获取来的数据不一样,很明显获取的签名有问题,是因为我的 url 配置和前端调起接口的 url 不一致造成的。

第五步:苹果手机测试

苹果手机真机测试,提示错误信息为:

the permission value is offline verifying

翻译为中文:权限值正在脱机验证

这个错误原因是 config 没有正确执行。

又继续去检查签名的问题,最后发现是后台接口字段写错了,欲哭无泪,总之还是签名信息错误。

第六步:安卓正常,苹果点击无反应

用安卓测试的时候,竟然好了,完美展示扫码结果,以为要好了。使用 ios 测试的时候,竟然发现点击的时候没有任何反应。

找了半天原因,是因为 window.location.href 不同造成的。

测试结果:

安卓:https://hp.******.net/

IOS:https://hp.******.net//

IOS 手机就是因为 url 与签名配置处的 url 不同,所以导致 config 执行失败。究其原因是因为我的 vue-router 是 hash 模式。

解决方案:把我的 hash 模式换成 history 模式。记得后台也需要配置 nginx 。

第七步:IOS 扫码无反应

当 IOS 能调起接口的那一刻,我以为要成功了,哪知道它就是要与 安卓 与众不同,扫码之后没有任何反应,但是如果你快速地连续多扫几次就会出现结果。

你就说要命不?网上查找了半天,看见有的人说有延时,最后想干脆加个延时算了。

果然加了延时之后就好了。

第八步:扫码结果处理

可能存在问题:

1、iOS设备扫码正常,Android设备扫码后没反应

2、Android设备扫码正常,iOS设备扫码后没反应

原因 :微信开发文档并没有说清楚,其实在微信后台可能是维护了2个接口, 或者是对设备类型进行了区别,总之在 回调 函数中返回的结果封装对象并不是同一个, 所以这要求我们也进行相应的处理, 不然就会出现上面这种默认奇妙的问题。

IOS 返回结果:

Android 结果:

第九步:修改路由

本以为 苹果安卓手机都能够正常扫码,没问题了。但是领导换需求了,之前是扫码放到外边,可以匿名扫。现在要修改成登录之后才可以扫码。

我就把路由修改了一下,先在登录页登录成功之后,再进入扫码页,后台也同步修改了 url 地址,修改完测试发现:

安卓的一切正常。

苹果手机坏了!

奔溃了,看看错误提示:noPermissionJsApi:[],errMsg:"config:ok"。

确定之后有一个错误提示。

errMsg:scanQRCode:the perssion value is offline verifying

一顿百度猛如虎,半天原地打转转!

有前边一次经验教训,我就又去找地址的原因。最后发现是竟然 $router.push 的跳转影响了我的 url ,在 IOS 上的 push 跳转不能写入浏览器的地址栏,但是安卓可以,导致安卓和 ios 跳转之后的地址不同,所以 ios 失败了。

解决办法:

此时就正常运行了。这下满足项目要求了,不会再出什么幺蛾子了!

微信官方开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4