python 3.1 unittest中不可用的断言方法

时间:2012-10-03 03:49:31

标签: python assert unittest2

我是python编程的新手,尤其是单元测试框架。 由于某些原因使用pyDev(py 3.1解释器),我不能使用所有这些新的 断言方法(例如assertRegexpMatches等..)。

以下是一个示例代码:

class TestParser(unittest.TestCase):

    def testskipCommentAndSpaces(self):
        if os.path.isfile(sys.argv[1]):
            #self.vmFilesListPath = sys.argv[1]
            vmFilesListPath = sys.argv[1]
        else:
            #self.vmFilesListPath = get_all_vm_files(sys.argv[1])
            vmFilesListPath = get_all_vm_files(sys.argv[1])
        #parser = Parser(self.vmFilesListPath)
        parser = Parser(vmFilesListPath)
        commands = parser.getCommands()
        for command in commands:
            for token in commands:
                p=re.search(r"(////)",str(token)) 
                **self.assertNotRegexpMatches(str(token),p)**

我得到的是:AttributeError:' TestParser'对象没有属性' assertNotRegexpMatches' 毋庸置疑:hasattr(self,' assertNotRegexpMatches')返回false,而#34; simple"断言方法运作良好。

我确定解释器设置为3.1 - 即我需要的正确版本(因为我的系统上也安装了py 2.7)。

谢谢你的帮助, Igor.L

1 个答案:

答案 0 :(得分:3)

虽然Python 3.1中的unittest模块有assertRegexpMatches方法,但没有记录assertNotRegexpMatches。在Python 3.2中,assertRegexpMatches已重命名为assertRegex,并添加了补充assertNotRegex

请注意,Python 3.1已过时,除了重要的安全修复程序之外不再维护。 Python 3.2和现在3.3中添加了许多功能,修复和主要性能改进,刚刚发布。考虑升级到其中一个。