ValueError: 在中没有这样的测试方法:runTest
ValueError: 在中没有这样的测试方法:runTest
我有一个测试用例:
class LoginTestCase(unittest.TestCase): ...
我想在另一个测试用例中使用它:
class EditProfileTestCase(unittest.TestCase): def __init__(self): self.t = LoginTestCase() self.t.login()
这引发了一个错误:
ValueError: no such test method in
我查看了引发异常的unittest代码,发现测试用例不应该以这种方式编写。是否有一种标准的编写测试用例的方式,以便之后的测试可以重用它?或者是否有一种解决方法?
我暂时通过给
LoginTest
添加一个空的runTest
方法来解决这个问题。
在某些情况下,当运行Python的unittest模块中的测试用例时,可能会遇到如下错误信息:ValueError: no such test method in
解决这个问题的方法是在测试用例的类中添加一个名为runTest的方法,该方法不做任何事情。可以直接在unittest模块的case.py文件中的TestCase类下添加这个方法,也可以在自定义的unittest.TestCase子类中直接添加这些代码。
具体的解决方法如下:
1. 打开python安装目录下的Lib\unittest\case.py文件。
2. 在TestCase类下添加如下代码:
def runTest(self): pass
通过添加这个方法,就可以避免出现上述错误。
同样的效果也可以通过直接在自定义的unittest.TestCase子类中添加以下代码来实现:
def runTest(self): pass
通过以上方法,就可以解决在运行unittest模块中的测试用例时出现的ValueError: no such test method in
这是一个测试用例的问题,原因是在myapp.tests.SessionTestCase
类中没有找到名为runTest
的测试方法。解决方法是使用unittest.TestLoader().loadTestsFromTestCase
方法加载测试用例,并使用unittest.TextTestRunner().run
方法运行测试用例。下面是解决问题的具体代码:
suite = unittest.TestLoader().loadTestsFromTestCase(Test_MyTests) unittest.TextTestRunner(verbosity=3).run(suite)
这段代码很方便,可以在shell中运行单元测试。感谢提供这个解决问题的方法。
问题出现的原因是在TestCase类中,虽然有一个名为"runTest"的默认方法名参数,但并没有默认实现的"runTest"方法。因此,当在TestCase的子类中没有定义名为"runTest"的方法时,就会出现"ValueError: no such test method in
解决方法是在TestCase的子类中为每个测试方法提供一个以方法名为参数的TestCase子类实例,并将其添加到TestSuite中,然后使用TextTestRunner运行TestSuite。
以下是代码示例:
import unittest class MyTest(unittest.TestCase): def test_001(self): print("ok") if __name__ == "__main__": suite = unittest.TestSuite() for method in dir(MyTest): if method.startswith("test"): suite.addTest(MyTest(method)) unittest.TextTestRunner().run(suite)
通过这种方式,可以确保TestCase的子类中的每个测试方法都被执行,从而解决了"ValueError: no such test method in