最强总结,Python自动化测试-sign签名实战,精品整理...

news2024/11/24 17:17:44

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

一般公司对外的接口都会用到sign签名,对不同的客户提供不同的apikey ,这样可以提高接口请求的安全性,避免被人抓包后乱请求,sign签名是一种很常见的方式。

sign签名

签名参数sign生成的方法:
第1步: 将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母升序排序。

第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,如不能将"转成”后再拼接)的方式拼接成一个字符串。

第3步: 把分配给接入方的验证密钥key拼接在第2步得到的字符串key。
第2步: 在上一步得到的字符串后面加上验证密钥key(这里的密钥key是接口提供方分配给接口接入方的),然后计算md5值,得到32位字符串,然后转成大写

第4步: 计算第3步字符串转小写后得到的md5值(32位),得到的字符串作为sign的值。

假设传输的数据是http://www.xxx.com/interface.aspx?sign=sign_value&p2=v2&p1=v1&method=cancel&p3=&pn=vn
(实际情况最好是通过post方式发送),
其中sign参数对应的sign_value就是签名的值。
第一步,拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1&method=cancel&pn=vn,
然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.

第二步,然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn

第三步,在上面拼接得到的字符串后加上验证密钥key,我们假设是abc,得到新的字符串methodcancelp1v1p2v2pnvnabc

第四步,然后将这个字符串换为小写进行md5计算,假设得到的是abcdef,这个值即为sign签名值。

注意,计算md5之前请确保接口与接入方的字符串编码一致,如统一使用utf-8编码或者GBK编码,如果编码方式不一致则计算出来的签名会校验失败。

python实现sign签名

我们假设提供的apikey为12345678,请求的body参数为

body = {
    "username": "test",
    "password": "123456",
    "mail": "",
    "sign": "签名后的值"
}

使用python实现签名

import hashlib


apikey = "12345678"  # 验证密钥,由开发提供

body = {
    "username": "test",
    "password": "123456",
    "mail": ""
}

# 列表生成式,生成key=value格式
a = ["".join(i) for i in body.items() if i[1] and i[0] != "sign"]
print(a)
# 参数名ASCII码从小到大排序
strA = "".join(sorted(a))
print(strA)

# 在strA后面拼接上apiKey得到striSignTemp字符串
striSignTemp = strA+apikey

# 将strSignTemp字符串转换为小写字符串后进行MD5运算

# MD5加密
def jiamimd5(src):
    m = hashlib.md5()
    m.update(src.encode('UTF-8'))
    return m.hexdigest()

sign = jiamimd5(striSignTemp.lower())
print(sign)

# 得到sign签名后新的body值
body["sign"] = sign
print(body)

运行结果

['usernametest', 'password123456']
password123456usernametest
1aca01806e93bb408041965a817666af
{'username': 'test', 'password': '123456', 'mail': '', 'sign': '1aca01806e93bb408041965a817666af'}

签名函数

把上面记流水账的代码,写成一个函数,方便调用

import hashlib


def sign_body(body, apikey="12345678"):
    '''请求body sign签名'''
    # 列表生成式,生成key=value格式
    a = ["".join(i) for i in body.items() if i[1] and i[0] != "sign"]
    # print(a)
    # 参数名ASCII码从小到大排序
    strA = "".join(sorted(a))
    # print(strA)

    # 在strA后面拼接上apiKey得到striSignTemp字符串
    striSignTemp = strA+apikey

    # 将strSignTemp字符串转换为小写字符串后进行MD5运算

    # MD5加密
    def jiamimd5(src):
        m = hashlib.md5()
        m.update(src.encode('UTF-8'))
        return m.hexdigest()
    sign = jiamimd5(striSignTemp.lower())
    # print(sign)

    # 得到sign签名后新的body值
    body["sign"] = sign
    # print(body)

    return body

if __name__ == '__main__':
    apikey = "12345678"  # 验证密钥,由开发提供

    body = {
        "username": "test",
        "password": "123456",
        "mail": "",
        "sign": ""
    }
    print(sign_body(body, apikey="12345678"))
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生活就像一场马拉松,坚持下去才能超越起点。只有不断努力,才能迎来更好的自己;只有勇往直前,才能抵达人生巅峰。无论遭遇怎样的挫折,都要相信自己的实力和未来。只要不停地奋斗,成功总会属于你。

只有不停地追求梦想,才能激发出无限的潜力;只有坚定不移地奋斗,才能走向成功的道路。再苦再累,也要怀揣信念,勇往直前。每一步都是磨练,每一次都是收获。只要你肯努力,就能创造属于自己的辉煌!

只有脚踏实地的付出,才能换来成功的回报;不要轻易放弃,每一份努力都会转化为力量;坚定目标,追求梦想,勇往直前,你就是最棒的自己!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在一周内成为更好的软件测试员?七个步骤带你一步一步晋升...

一、引言 软件测试是确保软件质量的关键步骤,而成为一个更好的软件测试员并非一朝一夕之事。然而,通过对一些关键领域的集中学习和实践,我们可以在短短一周内取得显著的进步。下面,我们将为你提供一周内可以立即执行并取得结果的…

豆瓣评分9.2,最牛R语言实战书升级版来了!

R 作为一个开源项目,在很多操作系统上都可以免费获得,包括 Windows、macOS 和 Linux。不管你用 R 做数据收集、汇总、转换,还是探索、建模、可视化或展示方面的工作,它都可以满足你。 目前 R 已经成为统计、预测分析和数据可视化…

【Protobuf速成指南】.proto文件的编写与编译

文章目录 1.0版本一、编写.proto文件1.文件规范:2.注释方式:3.指定proto3语法:4.package申明符5.定义message6.编写消息字段①类型对照表②唯一编号 二、编译.proto文件1. 编译指令2.源码分析 三、序列化和反序列化的使用四、小结 1.0版本 本…

(基于python)简单实现接口自动化测试

一、简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy。期望读者可以通过本文对接口自动化测试有一个大致的了解。 二、引言 …

Volo.Abp升级小记(二)创建全新微服务模块

文章目录 创建模块领域层应用层数据库和仓储控制器配置微服务 测试微服务微服务注册添加资源配置配置网关 运行项目 假设有一个按照 官方sample搭建的微服务项目,并安装好了abp-cli。 需要创建一个名为GDMK.CAH.Common的模块,并在模块中创建标签管理功能…

Redis指令-数据结构String类型和Hash类型

1. String类型 字符串类型,Redis中最简单的存储类型 底层都是字节数组形式存储,只不过是编码方式不同; 字符串类型的最大空间不能超过512m; SET/GET/MSET/MGET使用示例: INCR使用示例: INCRBY自增并指定步长…

GIS在地质灾害危险性评估与灾后重建中的应用

地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质灾害在世界范围内频繁发生。我国除滑坡灾害外,还包括崩塌、泥石流、地面沉…

摩托车电动车头盔新标准GB811-2022?将于2023年7月1日强制实施!

头部在发生交通事故时受到猛烈撞击,头盔可以有效地保护头部。因为头盔光滑的半球性,可使冲击力分散并吸收冲击力,而头盔的变形或裂纹以及护垫,又起到一个缓冲作用,也能吸收一部分能量。据测算:人的头部一般…

Splashtop 荣获2023年 NAB 展会年度产品奖

2023年4月20日 加利福尼亚州库比蒂诺 Splashtop 在简便快捷的远程办公解决方案方案领域处于领先地位。Splashtop 宣布其 Enterprise 解决方案在2023年 NAB 展会年度产品奖项中荣获远程制作奖。NAB 展会的官方奖励计划旨在表彰参展商在今年的 NAB 展会上展出的一些重要的、有前…

探索Beyond Compare:让文件比较和管理变得简单高效

在这个信息爆炸时代,我们的日常生活和工作中需要处理大量的数据和文档。在这个过程中,有时候我们会面临找出不同文件之间的差异、合并重复内容等需求。那么,有没有一款软件可以帮助我们轻松地完成这些任务呢?答案当然是肯定的&…

SAP从入门到放弃系列之CRP-part3

这边文章主要简单介绍Fiori 应用中关于计划相关的内容如何配置。首先则在Firoi Library中搜索对应的APP,地址如下: https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/# 以订单调度应用为例, SAP Fiori Apps Reference …

12 VI——变分推断

文章目录 12 VI——变分推断12.1 背景介绍12.2 Classical VI12.2.1 公式导出12.2.2 坐标上升法 12.3 SGVI——随机梯度变分推断12.3.1 一般化MC方法12.3.2 降方差——Variance Reduction 12 VI——变分推断 12.1 背景介绍 变分推断的作用就是在概率图模型中进行参数估计&…

黑客工具: Storm-Breaker(访问摄像头,麦克风,获取定位)附kali linux下载命令

tags: 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑客工具: Storm-Breaker(访问摄像头,麦克风,获取定位)附kali linux下载命令相关的知识,希望对你有一定的参考价…

【新星计划回顾】第五篇学习计划-数据库开启定时任务知识点

🏆🏆时间过的真快,这是导师回顾新星计划学习的第五篇文章!本篇文章主要是承接上一篇学习计划,通过开启定时任务进行模拟生成数据,实际开发项目中,可能会用到其他方式! 最近这段时间非…

K8s之Service四层代理入门实战详解

文章目录 一、Service四层代理概念、原理1、Service四层代理概念2、Service工作原理3、Service原理解读4、Service四种类型 二、Service四层代理三种类型案例1、创建ClusterIP类型Service2、创建NodePort类型Service3、创建ExternalName类型Service 三、拓展1、Service域名解析…

『Newsletter丨第一期』PieCloudDB 新增自动启停、预聚集、试用规则优化、费用中心等多项功能模块...

第一部分 PieCloudDB 最新动态 PieCloudDB 完成多个产品兼容性认证 PieCloudDB 与多家基础架构软件厂商完成产品兼容性认证,类别包括操作系统、服务器、CPU、云平台。 新增 8 家生态伙伴 ,包括龙蜥、麒麟、中科可控、海光、博云、杉岩、统信、兆兴…

小解送书【第一期】——《我们世界中的计算机》

目录 书籍介绍 内容简介 作者简介 译者简介 专家推荐 参与方式 书籍介绍 计算机和通信系统,以及由它们所实现的许多事物遍布我们周围。其中一些在日常生活中随处可见,比如笔记本电脑、手机和互联网。今天,在任何公共场所,都…

面向多告警源,如何构建统一告警管理体系?

本文介绍告警统一管理的最佳实践,以帮助企业更好地处理异构监控系统所带来的挑战和问题。 背景信息 在云原生时代,企业IT基础设施的规模越来越大,越来越多的系统和服务被部署在云环境中。为了监控这些复杂的IT环境,企业通常会选…

ATxSG 2023丨美格智能聚焦5G+AIoT,让全场景化数字生活加速到来

6月7日~9日,亚洲科技大会(Asia Tech x Singapore,简称ATxSG)在新加坡博览中心隆重开幕。ATxSG是亚洲旗舰科技盛会,由新加坡资讯通信媒体发展管理局(IMDA)和Informa Tech共同举办。第三届ATxSG聚焦生成式AI、Web 3.0和数…

YOLO系列理论合集(YOLOv1~v3SPP)

前言:学习自霹雳吧啦Wz YOLOV1 论文思想 1、将一幅图像分成SxS个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。 2、每个网格要预测B个bounding box,每个bounding box除了要预测位置(…