这个异常呢其实是因为我对list没有足够熟悉
我一开始很疑惑,明明已经正确返回testcase对象了呀,为啥会报TypeError: 'TestCase' object is not iterable这个错误 呢?
分析:
这个错误的意思是说TestCase这个对象是不可迭代的(注意到了吗,是TestCase,而不是testcase)
看print(testcase)输出的结果:
<TestCase.获取房源状态>
再看看是哪里调用了testcase对象,在runTest(testcase)函数中
使用for i in testcase 循环读出testcase对象当中的内容
首先testcase = runProject("all")会返回一个列表
我原本想是通过这句代码只取前2条数据,我以为这句代码执行后testcase = runProject("all")[2],testcase对象仍然是一个列表,但实际上这样写是只取了testcase列表中下标为2的元素,而不是testcase这个列表前2个元素了
正确的写法应该是这样的
testcase = runProject("all")[:2]
举个小例子说明一下:
for循环迭代一个列表--正常执行
In [2]: a=["a","b",123] In [4]: for i in a: ...: print(i) ...: a b 123
for循环迭代a[:2](a[:2]仍然是一个列表对象)--正常执行
In [8]: a[:2]
Out[8]: ['a', 'b']
In [6]: for i in a[:2]: ...: print(i) ...: a b
for循环迭代a[2](a[2]表示列表中下标为2的元素,该元素是数字123,该对象是不可迭代的)--报错了TypeError: 'int' object is not iterable
In [9]: a[2]
Out[9]: 123
In [7]: for i in a[2]: ...: print(i) ...: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-7-879d94b1fc77> in <module> ----> 1 for i in a[2]: 2 print(i) 3 TypeError: 'int' object is not iterable
顺例复习一下:
python中可以迭代的对象包括:字符串,列表,元组,字典,文件