unittest之測試用例名稱、收集規則


在unittest框架中,默認情況下,測試用例須以test開頭

但一定是需要以test_開頭嗎?

答案:不是

在unittest中,用例以什么開頭是可以自定義的,通過修改源碼的方法。

我們知道,用例的加載時unittest中的 test loader 實現的。
loader.py模塊中,有一個TestLoader類。類中有一個testMethodPrefix的屬性,默認是test
當我們改成‘aaa’時,aaa開頭的測試用例將會被收集和裝載:

loader.py文件

class
TestLoader(object): """ This class is responsible for loading tests according to various criteria and returning them wrapped in a TestSuite """ testMethodPrefix = 'aaa' sortTestMethodsUsing = staticmethod(util.three_way_cmp) testNamePatterns = None suiteClass = suite.TestSuite _top_level_dir = None

我們來寫一個aaa開頭的用例示例並執行:

test_prac1.py

import unittest


class TestPra1(unittest.TestCase):
    def setUp(self):
        print("this is setUp")

    def tearDown(self):
        print("this is tearDown")

    def aaa_1(self):
        self.assertEqual(2, 4)
test_prac2.py

import unittest


class TestPra2(unittest.TestCase):
    def setUp(self):
        print("this is setUp")

    def tearDown(self):
        print("this is tearDown")

    def aaa_2(self):
        self.assertEqual(2, 4)

執行結果如下:

this is setUp
this is tearDown
this is setUp
this is tearDown
FF
======================================================================
FAIL: aaa_1 (test_pra1.TestPra1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:\unitPrac\test_pra1.py", line 16, in aaa_1
    self.assertEqual(2, 4)
AssertionError: 2 != 4

======================================================================
FAIL: aaa_2 (test_pra2.TestPra2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:\unitPrac\test_pra2.py", line 17, in aaa_2
    self.assertEqual(2, 4)
AssertionError: 2 != 4

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (failures=2)

Process finished with exit code 1

我們可以看到aaa_1和aaa_2都被執行了。
說明,收集用例的規則是可以通過loader模塊的TestLoader類中的類屬性testMethodPrefix來修改的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM