繁体   English   中英

python unittest - 测试计数错误

[英]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测试问题。

我的问题:

  1. 上述行为的解释是什么?
  2. 如何让我的unittest程序显示2次测试(不是1或3)的结果?

我来这里谷歌搜索类似的问题,可以回答你的第一个问题:
PyCharm将每个测试方法(此处为test_1 )和每个子测试计为一次测试。 你有一个测试方法,它做两个子测试( 78 ),所以PyCharm显示3个总测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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