Python Unittest:AttributeError:在Linux上运行时没有属性'assertTrue'

时间:2017-07-25 08:22:38

标签: python linux unit-testing assert attributeerror

我在Python中运行了一些非常简单的单元测试,发现assertTrue()函数不起作用,而在同一个测试用例中,assertEqual()工作正常。 为了简化问题,我将代码最小化为以下内容:

import unittest

class easyTest (unittest.TestCase):
    def setUp(self):
        pass

    def test_true(self):
        self.assertTrue(True)

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

这批代码在我的Windows笔记本电脑上运行完美,但返回

AttributeError: easyTest instance has no attribute 'assertTrue'

当我尝试在Linux上运行它时。

在两台笔记本电脑上,我在IDE python 2.7.6上使用pyCharm Community Edition 2017.1.4。我的Linux笔记本电脑正在运行Ubuntu 14.04.1

我在这里找到了一个非常相似的问题: nice article 由于似乎没有人回答这个问题,我再次在这里问,希望得到一些突出的答案。

2 个答案:

答案 0 :(得分:1)

你的python路径中是否有可能有第二个unittest模块或软件包?

如果您创建了一个unittest.py文件或包含__init__.py文件的unittest目录,python可以在找到标准python库中的普通模块之前找到它。

命名本地模块或包unittest相当于命名局部变量列表或dict或map;您正在使用本地重新定义来屏蔽内置名称。

将该模块或包重命名为其他内容以解决此问题。

答案 1 :(得分:1)

根据您的评论,您使用的unittest版本是(已弃用的很长)独立PyUnit 1.4.1包。正如package's homepage mentions

  

除非您在2000年陷入困境,否则PyUnit将作为模块单元测试在您的Python标准库中。

事实上,unittest已添加到Python 2.1中的stdlib中。

IOW,除非你遇到一个antediluvian遗留代码库(使用Python< 2.1!),否则你应该卸载PyUnit,你的问题就会得到解决。