二、代码实现

规则同时也是签名的构造方法,按照上面所列的步骤用Python来实现。

获取apiToken:

请求参数有3个:

appKey:应用KEY(必填项)

timestamp: 访问时间戳(必填项),Unix时间戳;

signature:签名(必填项)

1 """

2 Created on 2019年04月03日3 @author:4 """

5

6 importtime7 importhashlib8 importrequests9 importoperator10 importjson11

12 appKey = "n3nuk67byade3c3qgrccjhosvmqfzt7z5wavp3ig"

13

14 appSecret = "b3a3056ef7ffb441332892ed76998b2e"

15

16 time_stamp =str(int(time.time()))17

18 url = "http://10.10.10.100:8080/rest/v1/token/get"

19

20

21 classget_tokenclass():22

23 #生成字符串

24 defstr_create(self):25 if operator.lt(appKey[0], appSecret[0]) == bool(1): #py3中operator类和py2中cmp()函数的作用相似,通过比较2个值的大小,返回布尔类型

26 strnew = time_stamp + appKey +appSecret27 else:28 strnew = time_stamp + appSecret +appKey29 print(strnew)30 returnstrnew31

32

33 #生成signature

34 defsignature_create(self):35 str_switch =self.str_create()36 signature = hashlib.sha1(str_switch.encode('utf-8')).hexdigest().upper().strip()37 print(signature)38 returnsignature39

40

41 #生成token

42 deftoken_creat(self):43 signature =self.signature_create()44 params = {"appKey":appKey, "timestamp":time_stamp, "signature":signature}45 res = requests.get(url=url,params=params)46 print(res.url)47 print(json.loads(res.content.decode('utf-8')))48 token = json.loads(res.content.decode('utf-8'))['result']['token'] #字节型的response转换成字符串型,再转换成字典型

49 print(token)50 returntoken51

52

53 if __name__ == '__main__':54 tc =get_tokenclass()55 #str_create()

56 #signature_create()

57 tc.token_creat()58 #tc.str_create()

59 #tc.signature_create()

测试用例:

测试用例用unittest框架来组织

1 """

2 Created on 2019年04月03日3 @author:4 """

5

6 importrequests7 importunittest8 importget_token9 from get_token importget_tokenclass10 importjson11 importre12 importhashlib13 importrandom14

15

16 classTest(unittest.TestCase):17

18 defsetUp(self):19 token_class =get_tokenclass()20 self.apiToken =token_class.token_creat()21 self.sign =token_class.signature_create()22 self.timeSTAP =get_token.time_stamp23 self.appKey =get_token.appKey24 self.appSecret =get_token.appSecret25 self.base_url = "http://10.10.10.100:8080"

26 self.headers = {"Content-type": "application/json", "Connection": "close"}27 self.requestId = str(random.randint(0, 99999)) #每次请求(每个case)生成不同的随机requestId

28

29

30 deftearDown(self):31 pass

32

33

34 #删除酒店

35 deftest_001(self):36 params ={37 "header": {38 "appKey": self.appKey,39 "apiToken": self.apiToken,40 "requestId": self.requestId,41 "timestamp": self.timeSTAP,42 "sign": self.sign43 },44 "body": {45 "hotels": [46 "aaa",47 "bbb"

48 ]49 }50 }51 body_list1 = str(params["body"])52 body_list2 = body_list1.replace(body_list1[25:32], "udid")53 body_list3 = re.sub("[[]", "", body_list2)54 body_list = re.sub("[]]", "", body_list3)55 list_sig = self.timeSTAP + self.apiToken + self.appSecret + self.appKey +body_list56 signature = hashlib.sha1(list_sig.encode('utf-8')).hexdigest().upper().strip()57 params["header"]["sign"] =signature58 res = requests.post(url=self.base_url+"/partner/hotel/remove", data=json.dumps(params), headers=self.headers) #第二次签名验证

59 response = json.loads(res.content.decode('utf-8'))60 self.assertEqual(response["msg"], "SUCCESS")61

62

63 if __name__ == '__main__':64 mySuit =unittest.TestSuite()65 tesTCases = ["test_001", "test_002", "test_003", "test_004", "test_005", "test_006", "test_007"]66 for cs intesTCases:67 mySuit.addTest(Test(cs))68 #mySuit.addTest(Test("test_003"))

69 myRun =unittest.TextTestRunner()70 myRun.run(mySuit)

另外,学会了一个变量名warning的处理办法,pep8编码规范,要求变量名或者函数名最好包含大小写。

除了通过修改pycharm设置的方式,还可以使用“驼峰命名法”来给变量或函数命名。

“驼峰命名法”,顾名思义,就是变量或函数的命名要像骆驼的驼峰一样有高低起伏(Ps:这个名字是不是很可爱呢~)

附链接:

-----------

-----------

另外:python的hashlib库还可以完成密码的md5加密等功能。

如:

importhashlib

password1= hashlib.md5("123456".encode('utf-8')).hexdigest().upper().strip()print(password1)

结果:E10ADC3949BA59ABBE56E057F20F883E

不错的文章:

-----------

-----------

python调用加签名的接口_Python处理接口测试的签名相关推荐

  1. python调用百度识别文字接口_python调用百度通用文字识别接口进行验证码识别

    官方文档入口 https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html#.E7.AE.80.E4.BB.8B 安装 pip3 install baidu- ...

  2. python实现简单的api接口-简单实现Python调用有道API接口(最新的)

    # ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...

  3. 用Python调用华为云API接口发短信

    [摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...

  4. 使用Python调用有道翻译接口实现翻译任务

    使用Python调用有道翻译接口实现翻译任务 首先直接上代码,可以直接复制调用 import hashlib import random import timeimport requestsclass ...

  5. 使用Python调用baidu翻译的接口,实现转换android stuido 中的values/strings.xml 解放生产力,自动翻译生成文件

    调用baidu翻译的接口,实现转换android stuido 中的values/strings.xml 解放生产力,自动翻译生成文件 因为使用的是合法免费的接口,每秒只能请求一次,测试结果翻译330 ...

  6. python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...

    前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密 ...

  7. 用 python 调用百度翻译 v2transapi 接口

    一.获得接口 url 打开百度翻译:百度翻译 右键检查 或者 F12 打开控制台.点击网络这一项: 输入文字:哈哈,点击图中的过滤按钮,选择全部 可以看到,v2transapi?from=zh& ...

  8. python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  9. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

  10. python如何调用java写的接口_Python 调用翻译接口

    最近在读 gartner 的一些文档,然后,,,全英文 然后看的我头昏脑涨....重点是效率低下...那我就想打开了我的有道,准备看到不认得的就鼠标悬浮一会,然后等反馈.. 可是,,这也太难了吧... ...

最新文章

  1. linux 雷电接口,Intel完全开放雷电技术:底层融合USB 4
  2. hdu1874 畅通project续 最短路 floyd或dijkstra或spfa
  3. [源码和文档分享]基于FFMEPEG-MATLAB和C#-SQL SERVER构建的手机录音数据库及特征分析...
  4. linux下配置jdk+tomcat
  5. mysql数据库怎么安装建表_mysql数据库安装及建表注意事项
  6. sql服务找不到服务器,我找不到SQL服务管理器
  7. linux内核配置与编译
  8. 【APP接口开发】常用HTTP响应头状态码详解
  9. 计算机网络应用押韵句,现代汉语练习题
  10. [转载](热议)“我不伟大”,但可以让善良“春暖花开”
  11. pcm转换在线工具_有木有好用的CAD格式转换工具可以推荐?在线等,挺急的
  12. Linux工作笔记037---Centos8.2下安装mysql_测试通过_注意这里安装8.0.22版本的_8.0以后的版本有需要注意的地方_跟7.0之前的版本不一样
  13. android--多View切换viewpager
  14. android反调试之父子调试
  15. Eclipse Community Survey 2012
  16. 全开源微信小程序商城系统源码:基于Java+uniapp框架开发
  17. css 识别屏幕大小自适应
  18. Deepin安装搜狗中文输入法
  19. Matlab系列之GUI设计实例2
  20. 第三方SDK接入--微信

热门文章

  1. 股指期权是什么?沪深300股指期权合约每张多少钱?
  2. 芙蓉镇漫记——蜻蜓点芙蓉
  3. 上海华为OD招聘 部门直招 有问必答
  4. KeyError: ((1, 1, 512), ‘|u1‘) 报错
  5. 免费指南:如何在 2022 年加强 Kubernetes 的安全性
  6. 分省农林牧渔服务业产值数据(2003-2020年)
  7. NOI1.10.07 合影效果 题解(C++)
  8. 从0到1使用Kubernetes系列(六):数据持久化实战
  9. Golang创建一个HTTP和HTTPS服务器
  10. 我为什么不喜欢Qihoo?