标题的长度被限制在一行,最少可能就只展示三四个字,完全没法从标题看到具体是什么意思了。体验问题。
我写过一个 demo,可以抓包批量将请求转为 har 文件。如果可以的话希望继续参与到平台中完成此功能的完善工作。
参见:https://gitee.com/guojongg/api2har
faker 可以写自定义造数据方法的。而且你这上面造的数据 faker 都能造.......
看了你上面的附言,感觉你这就是接口测试啊,你如果想知道数据是否正确,直接使用接口测试测试接口啊。你这用 ui 测试,用接口进行验证本身就是重复的啊,开发写的代码也是在调用后台接口,你也是在调用后台接口,如果参数都一样,返回也是一样的,起不到任何验证的作用。只能通过数据库查询来验证。
实际上 ui 自动化侧重于功能是否可用,而不在于验证数据是否可靠上面,数据是否正确应该放在接口测试上。
感觉不理解你到底想测什么了,你如果只是想验证搜索结果是否正确应该直接在 selenium 代码中写断言啊,跟接口测试有什么关系呢?
那现在就姑且人为后台接口是没问题的。你需要验证的点是后台返回的数据前端是否正常显示。基于这个目的,你只要拿到前端请求后台的接口数据做对比就好了。监控接口请求可以使用抓包工具......,刚好我今天提交了一次自动抓包的工具,希望你能用得上。https://gitee.com/guojongg/api2har
你后端返回的数据和你自己请求的接口返回的数据对比?难道后端不是请求的同一个接口吗?为啥还需要对比?
个人觉得这个功能可以支持提交 requirements.txt,后台服务自动安装依赖库。然后当脚本执行出错时应该将错误抛出到页面。
知道问题了,是 Python 第三方包的问题。这种依赖第三方依赖库的问题有解决办法吗?
我用 Python 写的预置脚本并没有生效啊?
import time
def _dispose_params(dict, timestamp=None):
"""
将参数按照规则排序
:param dict:
:return:
"""
if not timestamp:
timestamp = int(time.time() * 1000)
string = 'timestamp={}'.format(timestamp)
if not dict:
return string
sorted_list = sorted(dict.items(), key=lambda item: item[0], reverse=False)
l = []
for i in sorted_list:
if i[1] or i[1] == 0:
l.append(i)
if not l:
return string
sorted_str = [str(x[0]) + "=" + str(x[1]) for x in l]
string = string + "&" + '&'.join(sorted_str)
return string
def _rsa(message):
"""
使用rsa非对称进行签名
:param message: 要加密的字符串
:return:
"""
privite_key = """-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC8qQANiKqjB3XtYvC7MTvCqVZu9swVAls7Qh0TszpKI+E8RuBZ
Fb/lEUYDSTjhq8i93GOlCOt2FfsOFrw3tqQ8CNq53fOsBgOJkUbFVOKW8VWF683n
rQ4kA17w+EGSPorwC5WU/gN28MN17T4hiG1gYl5UVXae4bIVbdqwCzuDlwIDAQAB
AoGAZ00ubzqvHHegVeyAHi+2Jj+syTOvya0xoT/xRfE0cJY25Vd1zrG/EkGkEXaN
g9wZHgTINvysWUtt3WgLhYInaJn1xU5GGVHPQKWsD87vgRapcTkCT7gjhzGNi/D8
VKcl7izibrPObJ0uCLylDa9zZ5sel46z4Mm4Ji3CsVnOQ7kCQQD0XXQyDgK8p6D8
VNpufkJiiAYysfg8hDJPyiIJx9d0zZIDfQ4ESAcaXf5TqqU4l5KvpN5g80kcy5uM
92ZkO75tAkEAxaSQU9GwcxwSNWrBWibHYka54e7ASdfCI6KjLsOnWEGxFCQAYrpe
9FGFekYorXPj7HNYDgrKP0hlj8/eUbr3kwJBAK5XQoA3uMIqAlQkoda1I92yWGGw
0X8zfcWpW9GIj3JY+/SbMvXhAZhRORMuK0SN92xy/ulCiYYOycKv+5BFg50CQQC4
wa1prYuVD5i19qXo8HdSl2sMmXOHk/oX9eE1xhCZoE841K7HnBFHsy1jsFI2Uy+t
yeV2uv91SOgoF9lr7auhAkAeftJnpmveDObrG4HCdbSRZBu2zbXIvFDiXZkfVIge
MR1LJ19k2zvIT64vXJXz1LJfAkVb9cpegz037Qbl5+4r
-----END RSA PRIVATE KEY-----""".encode()
privkey = rsa.PrivateKey.load_pkcs1(privite_key)
crypto_text = rsa.sign(message.encode(), privkey, 'MD5')
crypto_text = base64.b64encode(crypto_text)
print('base64:', crypto_text)
return crypto_textvars.put("variable_name", "variable_value")
def sign():
clientId = '8d04c39446e17ebbc6f13abc61383b11'
timestamp = str(int(time.time() * 1000))
message = _dispose_params(params, timestamp)
sign = _rsa(message)
vars.put("clientId", clientId)
vars.put("timestamp", timestamp)
vars.put('sign', sign)
sign()