[英]python unittest - wrong test count
我正在为MOOC编写一个测试环境,我有以下单元测试类,它检查一个名为search
的方法的输出。 我们的想法是使用subTest
迭代几个输入(在这种情况下有2个)。
这是我的代码:
import unittest
import sys
from io import StringIO
import ex1
import ex1sol
class Ex1TestCase(unittest.TestCase):
def setUp(self):
self.orig_stdout = sys.stdout
self.test_lst = [4, 7, 2, 3, 1]
self.nums_to_search = [7, 8]
def tearDown(self):
sys.stdout = self.orig_stdout
def test_1(self):
for n in self.nums_to_search:
with self.subTest(n=n):
# get test output
new_stdout = StringIO()
sys.stdout = new_stdout
ex1.search(self.test_lst, n)
test_output =new_stdout.getvalue().strip()
# get solution output
new_stdout = StringIO()
sys.stdout = new_stdout
ex1sol.search(self.test_lst, n)
sol_output = new_stdout.getvalue().strip()
# compare
self.assertEqual(test_output, sol_output)
if __name__ == '__main__':
unittest.main()
这test_1
- 我有2个测试用例(我在test_1
方法中使用for循环运行。但是,一方面我的控制台输出是:
Ran 1 test in 0.001s
OK
Process finished with exit code 0
另一方面,pycharm声称我通过了3次测试: 我可以认为输出是因为最终我只运行一个测试方法,但我无法解释3测试问题。
我的问题:
我来这里谷歌搜索类似的问题,可以回答你的第一个问题:
PyCharm将每个测试方法(此处为test_1
)和每个子测试计为一次测试。 你有一个测试方法,它做两个子测试( 7
和8
),所以PyCharm显示3个总测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.