Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python unittest.TestCase对象没有属性';运行测试&x27;_Python_Unit Testing_Python 3.x_Python Unittest - Fatal编程技术网

Python unittest.TestCase对象没有属性';运行测试&x27;

Python unittest.TestCase对象没有属性';运行测试&x27;,python,unit-testing,python-3.x,python-unittest,Python,Unit Testing,Python 3.x,Python Unittest,对于以下代码: import unittest class Test(unittest.TestCase): def test1(self): assert(True == True) if __name__ == "__main__": suite = unittest.TestSuite() suite.addTest(Test()) unittest.TextTestRunner().run(suite) 使用Python 3执行时,会

对于以下代码:

import unittest

class Test(unittest.TestCase):
    def test1(self):
        assert(True == True)

if __name__ == "__main__":
    suite = unittest.TestSuite()
    suite.addTest(Test())
    unittest.TextTestRunner().run(suite)
使用Python 3执行时,会引发以下错误:

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    unittest.TextTestRunner().run(suite)
  File "/usr/lib/python3.2/unittest/runner.py", line 168, in run
    test(result)
  File "/usr/lib/python3.2/unittest/suite.py", line 67, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.2/unittest/suite.py", line 105, in run
    test(result)
  File "/usr/lib/python3.2/unittest/case.py", line 477, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.2/unittest/case.py", line 408, in run
    testMethod = getattr(self, self._testMethodName)
AttributeError: 'Test' object has no attribute 'runTest'
回溯(最近一次呼叫最后一次):
文件“test.py”,第10行,在
unittest.TextTestRunner().run(套件)
文件“/usr/lib/python3.2/unittest/runner.py”,第168行,运行中
测试(结果)
文件“/usr/lib/python3.2/unittest/suite.py”,第67行,在调用中__
返回自运行(*args,**kwds)
文件“/usr/lib/python3.2/unittest/suite.py”,第105行,运行中
测试(结果)
文件“/usr/lib/python3.2/unittest/case.py”,第477行,在调用中__
返回自运行(*args,**kwds)
文件“/usr/lib/python3.2/unittest/case.py”,第408行,运行中
testMethod=getattr(self,self.\u testMethodName)
AttributeError:“Test”对象没有属性“runTest”

但是
unittest.main()
有效。

任何
TestCase
子类的实际测试都是在
runTest()方法中执行的。只需将代码更改为:

class Test(unittest.TestCase):
    def runTest(self):
        assert(True == True)
您需要调用一个:


您必须指定测试方法名称(
test1
):


您可以这样运行它:

python -m unittest <your-module-name>
python-m单元测试

但我不完全理解为什么它会起作用。

是的,它会起作用。但是有没有一种方法可以让它在不改变测试类的情况下工作呢@bhajun-singh.只需说
pass
而不是
assert(True==True)
这似乎是另一种说法。也就是说:“TestCase的每个实例都将运行一个基本方法:名为methodName的方法。在TestCase的大多数使用中,您既不会更改methodName,也不会重新实现默认的runTest()方法。”
import unittest

class Test(unittest.TestCase):
    def test1(self):
        assert(True == True)

if __name__ == "__main__":
    suite = unittest.TestSuite()
    suite.addTest(Test('test1')) # <----------------
    unittest.TextTestRunner().run(suite)
if __name__ == "__main__":
    unittest.main()
python -m unittest <your-module-name>