1

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

这是一个示例代码:

类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 而“简单”断言方法效果很好。

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

谢谢你的帮助,Igor.L

4

1 回答 1

3

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

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

于 2012-10-03T04:58:51.630 回答