• 面试总结 at 2021年05月06日

    2021/5/6 后记

    今天七牛云 HR 跟我电话了,商定了后续入职手续的事情。感觉很意外,也意料之中。面试了 5 家公司最期待的公司面上了还是非常高兴的。

  • 面试总结 at 2021年04月29日

    所以当返回一致的情况下,我能想到的只有去数据库中验证了

  • 面试总结 at 2021年04月29日

    我想他想表达的是插入两次返回结果一致的情况下,我说的测试方法就不可行了。问这个情况下应该怎么测试。

  • 面试总结 at 2021年04月28日

    上海

  • 面试总结 at 2021年04月28日

    6 年了,期望 20+ 吧。

  • python 语法问题 at 2021年04月23日

    找到了,这是个标注语法;声明变量类型。但并没有声明变量。这个很奇怪...

    b: 'int' = 1
    c: int = '1'
    
    
    
  • python 语法问题 at 2021年04月23日

    python3.8.5 版本中,我试过了这么写是符合规则的,但不知道是什么意思,并不是赋值语句


  • 标题的长度被限制在一行,最少可能就只展示三四个字,完全没法从标题看到具体是什么意思了。体验问题。

  • 新需求点收集贴 at 2020年12月24日

    我写过一个 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 接收到这些参数时会自动判断并组装请求头。

  • 公司需要用到什么就学什么,如果没有,那你应该跳槽了~~~

  • 可是我要动态赋值肯定是因为没法直接赋值啊...有没有可能先给类设定一个初始方法,再重写这个方法,最后替换类属性;做到欺骗 IDE

  • @ 小小 Prcc 加油

  • 如果理解不错的话,你说的报卡应该是表单一类的输入框吧;你们领导的意思应该是去掉写死的元素查找规则,自动判断元素的类型来插入相应的数据;比如是输入框的,就直接插入一些文本进去,如果是下拉选择的,就随机选择第 N 个元素;这套规则写出来理论上就可以适配所有你说的报卡测试,不需要再加用例。