这和我在日志里打印有什么区别呢
接口右键复制 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()