繁体   English   中英

防止unittest调用sys.exit()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM