[英]Preventing unittest from calling sys.exit()
我无法阻止Unittest调用sys.exit()。 我发现Unittest导致sys.exit()搜索答案。我将代码修改为
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(run_tests.Compare))
并放在我的主要。 我相信唯一更改的是我的测试在一个名为run_tests.py的单独文件中。 看起来像这样
import unittest
from list_of_globals import globvar
value1 = globvar.relerror
value2 = globvar.tolerance
class Compare(unittest.TestCase):
def __init__(self,value1,value2):
super(Compare, self).__init__()
self.value1 = value1
self.value2 = value2
def runTest(self):
self.assertTrue(self.value1 < self.value2)
当我运行主要功能时,出现以下错误
File "./main.py", line 44, in <module> unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(run_tests.Compare)) File "/usr/lib64/python2.6/unittest.py", line 550, in loadTestsFromTestCase return self.suiteClass(map(testCaseClass, testCaseNames)) TypeError: __init__() takes exactly 3 arguments (2 given)
我不明白为什么会发生此错误,或者如何解决该错误。 任何帮助将非常感激。 我在Linux上使用python 2.6
您的问题出在单元测试课上。
编写单元测试时,您无意覆盖init,因为init方法用于处理要运行的测试。 对于测试配置,例如设置变量,您应该编写一个名为setUp
的方法,该方法不带任何参数。 例如:
class Compare(unittest.TestCase):
def setUp(self):
self.value1 = globvar.relerror
self.value2 = globvar.tolerance
def runTest(self):
self.assertTrue(self.value1 < self.value2)
链接问题中的问题是,在运行所有测试后, unittest.main
退出python。 对于该用户而言,这不是他们想要的结果,因为他们正在从IPython Notebook(实质上是增强的解释器)运行测试。 因此,它也被sys.exit
终止。 也就是说,出口在测试之外而不是在测试中被调用。 我以为被测函数正在调用exit。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.