• 这和我在日志里打印有什么区别呢

  • 接口右键复制 curl,可以在 postman 里面导入复制的 curl

  • 我对比了一下我之前通过 ssh 连接跳板机的代码,发现了与你的代码的不同之处,你可以尝试把不同部分加上再运行,希望能帮到你

    # 在实例化SSHTunnelForwarder加上 local_bind_address=('127.0.0.1', 22)
    # 以下为伪代码
    tunnel = SSHTunnelForwarder(其他参数,local_bind_address=('127.0.0.1', 22))
    # pymysql连接的时候host和port要修改为tunnel的host和port
    # 以下为伪代码
    conn = pymysql.connect(host=tunnel.local_bind_host,port=tunnel.local_bind_port,其他参数)
    
  • 虽然我不知道你的实际场景是怎么样的,但是如果是把 A 的结果当做 B 的数据源是可以实现的。刚刚的代码是有点问题,重新修改了一下,只需要在 courseClassify_list 初始化的时候,占位元素改为可变数据类型就可以了,然后根据你的类型来调用

    from ddt import ddt, data
    
    type = [1, 2]
    
    
    @ddt
    class MyTestCase(unittest.TestCase):
        courseClassify_list = [[] for _ in range(len(type))]  # 最终为[ [('data3', 'data4')],[('data3', 'data4')] ]的状态
    
        @data(*type)
        def test_A(self, data):
            # 执行A测试用例并向courseClassify_list插入数据
            self.courseClassify_list[type.index(data)].append(('data3', 'data4')) # 共2条用例,都会生成一份('data3', 'data4')
            print(self.courseClassify_list)  # 验证是否成功插入数据
    
        @data(*courseClassify_list)
        def test_B(self, data):
            # 使用courseClassify_list作为数据驱动执行B测试用例
            # 注意不是data,是data[0]
            print(data[0])  # 打印每个数据
    
    
    if __name__ == '__main__':
        unittest.main()
    

    输出结果:

    Ran 4 tests in 0.000s
    
    OK
    [[('data3', 'data4')], []]
    [[('data3', 'data4')], [('data3', 'data4')]]
    ('data3', 'data4')
    ('data3', 'data4')
    
  • 如果能保证 courseClassify_list 的长度和 type 的长度是一样的话,那你在定义 courseClassify_list 的时候先预设长度,在 test_A 执行的时候替换掉就可以了

    import unittest
    from ddt import ddt, data
    type = [1,2]
    @ddt
    class MyTestCase(unittest.TestCase):
        courseClassify_list = [_ for _ in range(len(type))]    #最终为[('data3', 'data4'),('data3', 'data4')]的状态
        @data(*type)
        def test_A(self,data):
            # 执行A测试用例并向courseClassify_list插入数据
            self.courseClassify_list[type.index(data)] = ('data3', 'data4')  #共2条用例,都会生成一份('data3', 'data4')
            print(self.courseClassify_list)  # 验证是否成功插入数据
        @data(*courseClassify_list)
        def test_B(self, data):
            # 使用courseClassify_list作为数据驱动执行B测试用例
            print(data)  # 打印每个数据
    if __name__ == '__main__':
        unittest.main()
    
  • 大佬,我想问下测试数据怎么搞?比如我抓包的时候做了新增、删除操作。新增的问题:新增时部分字段不能重复,比如手机号这些;删除的问题:删除的时候因为上一次已经删过了,这个 id 不能用了;这两个类型的问题怎么解决?

  • 被女人误了道心

  • 我觉得 airtest 也挺好,如果你还在选型的话,不妨考虑下 airtest

  • 社区里面有篇文章,参考一下
    https://testerhome.com/topics/8517

  • 不会 java,我用 python 的getattribute实现,你看看 java 有没有类似的方法

    class LoginApi():
        # 登录接口实现
        def login(self,):
            pass
    
    
    class ApiInit:
        # 接口映射
        login = LoginApi
    
        # 设置属性拦截
        def __getattribute__(self, item):
            # 返回实例化的接口对象
            return object.__getattribute__(self,item)()
    
    # 实例化ApiInit
    api = ApiInit()
    # 接口只会在每次调用时才会实例化
    api.login.login()