這個異常呢其實是因為我對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中可以迭代的對象包括:字符串,列表,元組,字典,文件