在哪做网站关键词创建一个行业网站多少钱
- 作者: 五速梦信息网
- 时间: 2026年04月20日 06:53
当前位置: 首页 > news >正文
在哪做网站关键词,创建一个行业网站多少钱,网络推广文案策划书,网站建设叁金手指花总1JsonPath应用及断言 重要 自动化要解决的核心问题 #xff1a;进行自动测试-自动校验#xff08;进行结果的校验 主要能够通过这个方式提取数据业务场景#xff1a;断言 、接口关联 {key:value}网址#xff1a;附#xff1a;在线解析 JSONPath解析器 - 一个工具箱 - 好用…JsonPath应用及断言 重要 自动化要解决的核心问题 进行自动测试-自动校验进行结果的校验 主要能够通过这个方式提取数据业务场景断言 、接口关联 {key:value}网址附在线解析 JSONPath解析器 - 一个工具箱 - 好用的在线工具都在这里 json的基本应用:\ 格式 $路径基础的应用【必须掌握的】
1. $.key
$.name
2. $..key — 从任意的目录去找
\(.name列表可以通过下标去进行获取从0开始 \).hobbies[2]\(..year --- 所有的年语法 \).key[?(.keyyear)]区间左闭右开后面的下标需要1 \(.projects[0:1]# 获取根目录下的子字段获取用户名 \).name
获取根目录下的字典中的数据获取地址中的城市country: USA
$.address.country
获取根目录下的列表中的某个数据获取教育经历
$.education[0]
获取根目录下的列表中的所有数据中的某个字段获取教育经历中的年
$.education[0:].year
获取根目录下的列表中满足某个条件的数据获取教育经历中的年等于2020 的数据
$.education[?(.year2020)]
获取所有的数据
\(.* 我们把数据放入pycharm中,在里面编写json代码 # 返回的数据类型都是列表格式【重点】 res jsonpath.jsonpath(data, \)..year) print(res) print(type(res))res jsonpath.jsonpath(data, $.name) print(res) # 列表 print(res[0]) # 下标获取某个值 print(type(res))代码示例如下 import jsonimport requests import jsonpath# 案例登录接口
接口请求的四要素URL\ 请求方法 \请求参数\响应数据
URL
url http://shop-xo.hctestedu.com/index.php?s/api/user/login
请求参数– 公共参数– url
pulic_data {application: app, application_client_type: weixin}
请求参数– body (你的body数据是要以json进行提交参数json)
data {accounts: hami, pwd: 123456, type: username}
请求头
header {Content-Type: application/json; charsetutf-8}
请求头是json所以数据类型需要转
json_data json.dumps(data)# ——————–发送接口请求————————— res requests.post(url, paramspulic_data, headersheader,datajson_data) # 正确的演示# ——————–获取响应数据————————— print(res.json())
print(响应的数据类型, res.headers)# ——————–获取数据进行断言处理—————————
失败案例
exData 登录成功
SjData jsonpath.jsonpath(res.json(),$.msg) # 错误的案例
SjData jsonpath.jsonpath(res.json(),$.msg)[0]
print(SjData)
assert exData SjData, 期望结构是:{0},实际结果是:{1}.format(exData, SjData)示例2: import requests import jsonpath import json
案例一
url http://shop-xo.hctestedu.com/index.php?s/api/user/login public_data {application: app, application_client_type: weixin} data {accounts: hami, pwd: 123456, type: username} res requests.post(urlurl, paramspublic_data, datadata)
—————————————-
获取响应数据
result1 res.json() # 以字典的格式获取 result2 res.text # 以文本的格式获取 print(type(result1)) # 字典 class dict print(type(result2)) # 字符串 class str
实际结果
字典格式直接获取数据
reality_res jsonpath.jsonpath(result1, $.msg)
字符串格式先通过.loads()进行转换
dict_data json.loads(result2) reality_res jsonpath.jsonpath(dict_data, $.msg)
期望结果
desire_res 登录成功
断言期望结果 实际结果
assert desire_res reality_res # 是一个列表需要通过下标获取具体的值
assert desire_res reality_res[0] print(reality_res) 接口关联 重要(上一个接口的响应数据作为下一个请求数据) 接口关联是在进行接口测试时将一个接口的返回结果中的某些数据提取出来然后作为后续接口请求的参数或者验证的依据。通过接口关联可以实现接口间的数据传递和依赖关系的建立 接口关联通常分为两种类型请求关联和响应关联。
请求关联 提取关键参数在一个接口的请求中某些参数的值是由之前接口的响应结果提供的。需要提取出这些关键参数并将其作为后续接口的请求参数。 例如一个接口的请求中需要使用到某个用户的登录令牌token可以通过在登录接口的响应结果中提取出令牌token然后在后续接口的请求中使用
响应关联 验证关键数据在一个接口的响应结果中某些数据是需要验证的可以将这些数据提取出来并进行断言或者其他验证操作。 例如一个接口的响应结果中包含了某个订单的状态信息可以将该状态信息提取出来然后进行断言验证订单是否处于正确的状态 1. 首先登录成功–提取token
通过用户去进行加入购物车。— token值取进行指定 在线美化json地址JSON在线解析及格式化验证 - JSON.cn 案例:通过登录的用户把登录的用户加入购物车 import requests import jsonpath
案例一登录接口
url http://shop-xo.hctestedu.com/index.php?s/api/user/login public_data {application: app, application_client_type: weixin} data {accounts: hami, pwd: 123456, type: username} res requests.post(urlurl, paramspublic_data, datadata)
—————————————-
获取响应数据
result res.json() print(f响应结果是{result})
期望结果
desire_res 登录成功
实际结果
reality_res jsonpath.jsonpath(result, $.msg)
断言期望结果 实际结果
assert desire_res reality_res # 是一个列表需要通过下标获取具体的值
token jsonpath.jsonpath(result, $.data.token) print(f获取到的token值为{token}) assert desire_res reality_res[0]
案例二:加入购物车
url http://shop-xo.hctestedu.com/index.php?s/api/cart/save
public_data {application: app, application_client_type: weixin, token:
8ae1ce79ed621a991a5e53ba9f96bfd3} public_data {application: app, application_client_type: weixin, token: token} data { goods_id: 11, spec: [ { type: 尺寸, value: M } ], stock: 10 } r es requests.post(urlurl, paramspublic_data, datadata) print(f请求的url是:{res.url})
获取响应数据
result res.json() print(f响应结果是{result})
期望结果
desire_res 加入成功
实际结果
reality_res jsonpath.jsonpath(result, $.msg) assert desire_res reality_res[0] 对称加密与非对称加密 我们使用加密目的是提高数据的安全性 提高安全性的方法如下: 在对应的协议加认证证书 http请求 — https请求 花钱去买一个安全通过一些常用的算法去进行解决 MDH\ SHA\ 编码BASE64通过对应加密方式去进行加密对称加密 、非对称加密 对称加密: 在对称加密算法中加密和解密使用的是同一把钥匙即使用相同的密匙对 同一密码进行加密和解密 加密过程如下 加密原文 密匙 密文 解密密文 - 密匙 原文 对称加密代码如下: 对称加密加密和解密使用的是同一把钥匙即使用相同的密匙对同一密码进行加密和解密。 常用的加密方法DES、3DES、AES…(AES算法是目前最常用的对称加密算法)import base64 from Crypto.Cipher import AESclass EncryptDate:# 构造方法def init(self, key):# 类属性self.key key.encode(utf-8) # 初始化密钥self.length AES.block_size # 初始化数据块大小 16位self.aes AES.new(self.key, AES.MODE_ECB) # 初始化AES,ECB模式的实例# 截断函数去除填充的字符self.unpad lambda date: date[0:-ord(date[-1])]# 缺几位数据就补齐多少位数据16的倍数def pad(self, text): # text tony#填充函数使被加密数据的字节码长度是block_size的整数倍count len(text.encode(utf-8)) # count 4add self.length - (count % self.length) # 求它们相差的位数# add 16- 4%16 16 - 4 12entext text (chr(add) * add)# entext “tony” chr(add) * 12 entext tony# print(entext的数据是:,entext)return entext# 加密函数def encrypt(self, encrData): # 加密函数 encrData tony 16位res self.aes.encrypt(self.pad(encrData).encode(utf8)) # self.aes.encrypt(tony)msg str(base64.b64encode(res), encodingutf8)return msg# 解密函数def decrypt(self, decrData): # 解密函数 XbXHJrNLwoTVcyfqM9eTgQ# 从base64编码转回来res base64.decodebytes(decrData.encode(utf8))# 将数据进行对应的解密XbXHJrNLwoTVcyfqM9eTgQmsg self.aes.decrypt(res).decode(utf8)# print(msg的值,msg)# 把转回来的数据后面的字符去掉。return self.unpad(msg)def fun1():
通过方法把这个接口请求通passif name main:# 加密 会补位key 1234567812345678 # key 密码data tony # 数据eg EncryptDate(key) # 这里密钥的长度必须是16的倍数并且设置对应的【模式】res eg.encrypt(str(data))print(f加密后的数据为{res})# 解密 把后面的数据进行去除key 1234567812345678 # key 密码data XbXHJrNLwoTVcyfqM9eTgQ # 数据eg EncryptDate(key) # 这里密钥的长度必须是16的倍数res eg.decrypt(str(data))print(f解密后的数据为{res}) 非对称加密: 明白了对称加密后我们来了解一下什么是非对称加密。我们知道对称加密是使用的同一把密匙进行加密和解密。那么非对称加密自然是使用 不同的密钥进行加密和解密 啦。 非对称加密有两个钥匙及公钥Public Key和私钥Private Key。公钥和私钥是成对的存在如果对 原文 使用 公钥加密 则只能使用 对应的私钥 才能 解密 因为加密和解密使用的不是同一把密钥所以这种算法称之为非对称加密算法。
非对称加密算法的密匙是通过一系列算法获取到的一长串随机数通常随机数的长度越长加密信息越安全。通过私钥经过一系列算法是可以推导出公钥的也就是说公钥是基于私钥而存在的。但是无法通过公钥反向推倒出私钥这个过程是单向的 代码如下 # -- coding: utf-8 -- import base64 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher# 注意开头
PKCS1是BEGIN RSA PUBLIC KEY
PKCS8是BEGIN PUBLIC KEY
PKCS8 案例
公钥
pub_str1 —–BEGIN PUBLIC KEY—– MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgFAOoAvLNvQv8BNGQq7B m8ifMIUaYnFIC2Vu3ahW98zu/0Bg2GFAiIShOlNZcP8dGVLX6J4p3k6pFRhloWJ nviJUVU1xdZGjnk6snARB2V8u73o5HQqn7ISgipjIb8pQc9wCZNBBT5eOB83K44 5Md0slkgz05jQ9Cj4UcIHUWquwGNQYo3zy9DOqDJaWimu46O1HnZAWrADsBfURPB p9cqqmnxYMejqkBbj9JWhw3YLpB9sLMQib0p7MEGA8GrpGcXGYxdI0f0ZfJqEt TpuJHNdSZwN7oZiBhJlLtHOIRcq2dFCKUMYgrW9XK8cJVJVYxU7R1e2ZURXSmP3 yQIDAQAB —–END PUBLIC KEY—–# 私钥 priv_str1 —–BEGIN RSA PRIVATE KEY—– MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCAUA6gC8s29C/w E0ZCrsGbyJ8whRpicUgLZW7dqFb3zO7/QGDYYUCIhKE6U1lw/x0ZUtfonj6neTqk VGGWhYmeIlRVTXF1kaOeTqycBEHZX7y7vejkdCqfshKCKmMhvylBz3AJk0EFPl4 4Hzcrjjkx3SyWSDPTmND0KPhRwgdRaq7AY1BijfPL0M6oMlpaKa7jo7UedkBasAO wF9RE8Gn1yqqafFgx6OqQFuP0laHD7dgukH2wsxCJvSnswQYDwaukb5xcZjF0jR/ Rl8moS1Om4kc11JnA3uhmIGEmUv60c4hFyrZ0UIpQxiCtb1crxwlUlVjFTtHV7Zl RFdKY/fJAgMBAAECggEALex5T47pDKIZBjPf0b36TWdgkl0RNGqW/n0vUOYPOmF qJzCDK/CCRpvGhD60hZ8s7OS0w7QHeClvGr3AoiI2PzbKOD2ffhTCGsbNwIlFiCd bxVYTJLDvEHkLZssE78bNRKpZsPtYZMQ5cVGWbBtiAtBCgiNhA4Nu1VuitSHCdw cpHrFCA7ESDmfmRGe7QAnTEkC2nUoM/9xPIBV4B1Lz3/KJuYzJZWXkw1m64rC55 9cPILlc9zTrKYw0JSyC0PGXQSOZZ71TyEicsptVLIM2NT2ppdyu57i3IcVoFXyV6 XVoEWEFOXSppxkWXVXlYfJRT/rb1bEjzSCBWYKYGgQKBgQDLzcF1S/CMIlAW6LDY vO0uoPOuMZE3yUUMASKrF2M0IuTZxO2Z/DSwwr3bt7X/r32sDceiVGAAj735VToh ERhHOtgbP1s4S/rytHHMpAfEKciCcC8eNHvO4Q/N4W94B0uaUufamWRsgQog1F5F 12ymeuas0HApHTtEdohw1kR9uwKBgQChLMm5PyskU4ID0Jjse6XEwE4HcNCH9Qp6 MtBGznNLsGS2dLw8meKz6Q28ytgSGHPxFYEjzVmVKkiXzz95o6r3tn8so7IcfBJ T55zn5DVK4o6ZYAeLWjBEzjTbbOIloFiOYgBHy9LXvV8kCN0bmBXvX1KEU2J6/Zh rkIHRbZGSwKBgE0f0MJTumpHofc3PfYXyWTMURNa7ghyahmUZlPi3IydkpW9Nee Es6Fk9WvKwesgLF4sYCjz4TG4MyXTR0wW/CwuxFso3elgT0RvjMELBA3A7MhAyO6 FtROZW2zDzzr/ddT4nveKpvJJW0REO/7OxmxTtQ9OQTGFCSveqjA3UB7AoGBAJ4j QbGehwfXX6O6kbDGCPmo7WZjjFc5WBRZsv0mJv3GjqpukxqqqkJ3keEA7Uuj7m5G TRVkWXH3P4GfHMu4Nq3lsQHwQQtzQtsSslDof5dmChojj5uORnpcPcyOBlO4FS jVz8afz7qMWU7xSYD7NG2p1HqNqASHfC8EoOXi9NAoGAZT5ezE1bTpIo40wArVJG TA4R59m9RugGIFQl2Tpqw9ACUTjVNBkNtCpLEYV9Fznwy1PxE2OW5zGgpwWPm63D D4tH1xShy5jOm7MIF7afrYgPbIYXyIdFtXY7sJuLETD2sYFBHG5ocZ4Pto/ELV7g iK3ec5UKwA/TN7l7Q7NE9A —–END RSA PRIVATE KEY—– class Rsa:# 自动调用我们构造方法加载对应的公钥和私钥def init(self):# 加载公钥self.pub_key RSA.importKey(pub_str1)# 加载私钥self.pri_Key RSA.importKey(priv_str1)# rsa加密返回加密结果def encrypt(self, text):# 1. 创建一个加密器对象 cipher使用 self.pub_key 作为公钥cipher PKCS1_cipher.new(self.pub_key)# 2. 加密将text.encode(utf-8) 转为b64编码rsa_text base64.b64encode(cipher.encrypt(text.encode(utf-8))))# 3. 解码为字符串text rsa_text.decode(utf8)return text# rsa解密 返回解密结果def decrypt(self, text):# 1. 创建一个加密器对象 cipher使用self.pri_Key作为公钥cipher PKCS1_cipher.new(self.pri_Key)# 2. 解密将密文数据 text 转换为 UTF-8 编码的字节序列# 然后使用cipher对象调用decrypt()方法进行解密。# 解密前还需要对密文进行 Base64 解码得到原始的加密结果。# 第二个参数 0 表示不使用任何的填充方式rsa_text cipher.decrypt(base64.b64decode(text.encode(utf8)), 0)# 解码为字符串text rsa_text.decode(utf8)return textif name main:# 1. 实例化对象rsaer Rsa()# 2. 进行加密处理info rsaer.encrypt(哈米)print(加密:, info)# 3. 进行解密处理print(解密:, rsaer.decrypt(info))
- 上一篇: 在哪买网站链接学校建设评建工作网站
- 下一篇: 在那个网站做直播好赚钱吗界面设计优秀作品欣赏
相关文章
-
在哪买网站链接学校建设评建工作网站
在哪买网站链接学校建设评建工作网站
- 技术栈
- 2026年04月20日
-
在哪里做企业网站微网站开发平台免费
在哪里做企业网站微网站开发平台免费
- 技术栈
- 2026年04月20日
-
在哪里买空间做网站做咩有D网站响网吧上不了
在哪里买空间做网站做咩有D网站响网吧上不了
- 技术栈
- 2026年04月20日
-
在那个网站做直播好赚钱吗界面设计优秀作品欣赏
在那个网站做直播好赚钱吗界面设计优秀作品欣赏
- 技术栈
- 2026年04月20日
-
在深圳市做一个网站多少钱兰州市一地发布提醒
在深圳市做一个网站多少钱兰州市一地发布提醒
- 技术栈
- 2026年04月20日
-
在什么网站可以接设计做全网营销实例
在什么网站可以接设计做全网营销实例
- 技术栈
- 2026年04月20日
