' NoneType'对象在类中不可迭代

时间:2016-12-12 01:35:54

标签: python

我正在编写测试脚本并遇到了这个问题:

ERROR - FAILED - ERROR Message:'NoneType' object is not iterable

代码在这里:

class tc_ID2****(****):
    def test_run(self):
        case_name = self.__class__.__name__
        logger.info("========== Begin of Running Test Case %s ==========" % self.__class__.__name__)
        try:
            the_list = self.list_objects("main-window")
            off_list = self.coveroff(the_list)
            if 'lblname' in off_list:
                self.assert_(True, case_name)
            else:
                raise FailException("Can't find the lable")
        except Exception, e:
            logger.error("FAILED - ERROR Message:" + str(e))
            self.assert_(False, case_name)
        finally:
            self.capture_image(case_name)
            self.restore_gui_environment()
            logger.info("========== End of Running Test Case: %s ==========" % case_name)

    def coveroff(self,the_list):
        off_list=[]
        for list_unit in the_list:
            if  isinstance(list_unit,list):
                off_list.extend(list_unit)
            else:
                off_list.append(list_unit)
        return  off_list

if __name__ == "__main__":
    unittest.main()

list_object方法将返回一个两层嵌套列表。

def list_objects(self, window):
        logger.info("get objects list in window: %s" % window)
        all_objects_list = self.__parse_objects(ldtp.getobjectlist(self.get_locator(window)))
        logger.info("sorted all_objects_list: %s" % all_objects_list)

def __parse_objects(self, objects_list):
        logger.info("parse objects list")
        window_list = []
        tab_list = []
        button_list = []
        table_list = []
        text_list = []
        menu_list = []
        checkbox_list = []
        label_list = []
        others_list = []
        parsed_objects_list = [window_list, tab_list, button_list, table_list, text_list, menu_list, checkbox_list, label_list, others_list]
        for item in objects_list:
            if item.startswith("frm") or item.startswith("dlg"):
                window_list.append(item)
            elif item.startswith("ptab"):
                tab_list.append(item)
            elif item.startswith("btn"):
                button_list.append(item)
            elif item.startswith("ttbl") or item.startswith("tbl"):
                table_list.append(item)
            elif item.startswith("txt"):
                text_list.append(item)
            elif item.startswith("mnu"):
                menu_list.append(item)
            elif item.startswith("chk"):
                checkbox_list.append(item)
            elif item.startswith("lbl"):
                label_list.append(item)
            else:
                others_list.append(item)
        return parsed_objects_list

但我无法从嵌套列表中找到东西。

所以我创建了一个名为coveroff的方法,使两层列表成为一个简单的列表。

但是这个错误让我失望了。

如何调试此错误?欢迎任何想法!

1 个答案:

答案 0 :(得分:0)

在Python中,方法中没有return语句与返回None相同。因此,当您希望它返回列表时,您的方法将返回None,从而返回错误。