我正在尝试在python 3.3.2中运行一个包含多种测试方法的TestCase:
class ttt(unittest.TestCase):
def setUp(self):
...
def tearDown(self):
...
def test_test1(self):
...
def test_test2(self):
...
if __name__ == "__main__":
instance = ttt()
instance.run()
文档说明如下:
每个TestCase实例都将运行一个基本方法:该方法 命名方法名称。但是,默认的标准实现 methodName,runTest()将以test开头的每个方法运行 个别测试,并相应地计算成功和失败。 因此,在TestCase的大多数用途中,您都不会更改 methodName也不重新实现默认的runTest()方法。
但是,当我运行代码时,我得到以下内容:
'ttt' object has no attribute 'runTest'
我想问:这是一个错误吗?如果不是为什么没有runTest方法呢?我做错了吗?
答案 0 :(得分:2)
当单元测试框架运行测试用例时,它会为每个测试创建一个测试类的实例。
即。模拟单元测试框架需要做什么:
if __name__ == "__main__":
for testname in ["test_test1", "test_test2"]:
instance = ttt(testname)
instance.run()
在模块中运行单元测试的正确方法是:
if __name__ == "__main__":
unittest.main()
...但我猜你已经知道了。
关于runTest
:unittest.TestCase.__init__
签名和docstring是:
def __init__(self, methodName='runTest'):
"""Create an instance of the class that will use the named test
method when executed. Raises a ValueError if the instance does
not have a method with the specified name.
"""
这意味着如果您未在构造函数中指定测试名称,则默认为runTest
。