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

  • 新需求点收集贴 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()