2018-07-09 借助Postman使用python测试接口功能

postman是个很好的接口测试工具,可以很方便的调试接口。相关Postman使用可参考: postman接口测试系列:基本操作总结

不过在面对复杂的一些接口时,需要手动写代码实现一些功能,在postman工具内似乎有些麻烦。

举个例子,某个接口请求中,需要获取实时的时间戳,并进行签名,如果只是调用一次那么可以手动分别计算一下并填入请求参数中。如果需要不断调试,那么就需要动态获取和计算这些参数了。

网上也有一些相关的Postman工具自动获取时间戳和签名的方法:Postman接口测试系列:时间戳和加密

不过看起来不是很好调试,看来还需要想想更好的方法。

摸索一会后,发现在postman是可以根据当前的请求信息,自动生成不同平台的代码的。


image.png

那么就用目前火热的python来试一下效果吧。

首先,需要在postman手动调用一次接口,以此来生成python代码,如下图所示。


image.png

有了这个模板以后,那么就可以直接在python在实现这个接口请求,并使用参数化的方式替换掉模板中时间戳与对应签名值了。

直接上代码

import http.client
import time
import hashlib

req_id='1'
username='kim666'
tel='13899999999'

#获取当前时间戳
t=time.time()
timestamp=int(round(1000*t))
print(timestamp)

#MD5签名值
toSign=req_id+str(timestamp)+username+tel
print(toSign)
m=hashlib.md5()
m.update(toSign.encode('UTF-8'))
sign=m.hexdigest()
print(sign)

#f演示地址,实际需替换真实地址
conn = http.client.HTTPConnection("api.test.com:8080")

payload = ('req_id={0}&timestamp={1}&username={2}&tel={3}&sign={4}').format(req_id,timestamp,username,tel,sign)
print(payload)
headers = {
    'content-type': "application/x-www-form-urlencoded",
    'cache-control': "no-cache",
    'postman-token': "5306728e-9e65-ef5a-1448-930cb10f0b78"
    }
conn.request("POST", "/login", payload, headers)
res = conn.getresponse()
data = res.read()

#打印响应结果
print(data.decode("utf-8"))

执行完成后即可查看请求的响应结果,再也不需要重复计算Md5和时间戳了。


图片发自简书App
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,237评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,688评论 1 180
  • 又到春分,春盛了,也深了。 小时候,不明白春分是什么意思,只知道每到这天,母亲都会熬好一大锅红茶让全家人喝,说是可...
    画紫阅读 597评论 0 6
  • 这是一份来自西伯利亚原始森林松鼠嘿嘿先生编写的“高效沟通教程”,以他跟他岳父岳母提亲的那场谈话为例。 背景:松鼠嘿...
    旷野里的树儿阅读 1,244评论 16 8