我在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 由于似乎没有人回答这个问题,我再次在这里问,希望得到一些突出的答案。
答案 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,你的问题就会得到解决。