我在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
我在这里发现了一个非常相似的问题: 属性错误:TestSwitch 实例没有属性"assertTrue" 既然似乎没有人回答这个问题,我在这里再次提问,希望得到一些突出的答案。
根据您的评论,您使用的 unittest 版本是(长期弃用的(独立PyUnit 1.4.1
包。正如软件包的主页所提到的:
除非你停留在2000年,否则PyUnit作为模块单元测试在你的Python标准库中。
事实上,unittest
被添加到Python 2.1的stdlib中。
IOW,除非你坚持使用古老的遗留代码库(使用Python <2.1!(,否则你应该卸载PyUnit,你的问题就会得到解决。
你的python路径中是否有第二个单元测试模块或包?
如果你创建了一个包含__init__.py
文件的 unittest.py 文件或 unittest 目录,python 可以在标准 python 库中找到普通模块之前找到它。
命名本地模块或包 unittest 等效于命名局部变量列表、字典或映射;使用局部重定义屏蔽内置名称。
将该模块或包重命名为其他名称以解决此问题。