哎,运维是独立了,但测试还在做,只不过减少了相关工作内容
我以为测开只是为测试赋能,这种为研发赋能的也是测开吗
好造的,在最上面 env 中定义某个关联字段的值,多个表之间的关联可以引用同一个变量就好了
今天七牛云 HR 跟我电话了,商定了后续入职手续的事情。感觉很意外,也意料之中。面试了 5 家公司最期待的公司面上了还是非常高兴的。
所以当返回一致的情况下,我能想到的只有去数据库中验证了
我想他想表达的是插入两次返回结果一致的情况下,我说的测试方法就不可行了。问这个情况下应该怎么测试。
上海
6 年了,期望 20+ 吧。
找到了,这是个标注语法;声明变量类型。但并没有声明变量。这个很奇怪...
b: 'int' = 1
c: int = '1'
python3.8.5 版本中,我试过了这么写是符合规则的,但不知道是什么意思,并不是赋值语句
标题的长度被限制在一行,最少可能就只展示三四个字,完全没法从标题看到具体是什么意思了。体验问题。
我写过一个 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()
体验了一下,发现每一个接口用例都需要写一遍请求头、请求地址、请求方法等接口描述信息;这样的话,我本身一个接口有多个用例的情况下,只有数据需要修改,这个没有做到用例的接口和数据分开。写起来还是比较麻烦的。
预执行脚本兼容 Python 吗?
跟请求头没关系啊,requests 会自动处理请求头。比如你接口是表单类型,那你直接写成 self.send(data=data,),要传 json 类型的,写成 self.cend(json=data) 就行了。
如果没理解错的话。你是想通过这个方法自动适配 body 的任意类型是吗?如果是这样的话,你不需要判断,requests 库的请求方法,支持 data(原始数据), json(json 数据),files(文件参数),params(get 请求参数)等,你只需要在你的 excel 里面把这几个都定义好就好了。没有就空着,requests 接收到这些参数时会自动判断并组装请求头。