簡體   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