国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

unittest 組織測(cè)試代碼

2022-08-02 10:56 更新

單元測(cè)試的基本構(gòu)建塊是測(cè)試用例 — 必須設(shè)置和檢查其正確性的單個(gè)方案。在 ?unittest ?中,測(cè)試用例由 unittest.TestCase 實(shí)例表示。要?jiǎng)?chuàng)建自己的測(cè)試用例,您必須編寫(xiě) TestCase 的子類(lèi)或使用 FunctionTestCase。

TestCase 實(shí)例的測(cè)試代碼應(yīng)該完全獨(dú)立,這樣它既可以單獨(dú)運(yùn)行,也可以與任意數(shù)量的其他測(cè)試用例任意組合運(yùn)行。

最簡(jiǎn)單的 TestCase 子類(lèi)將簡(jiǎn)單地實(shí)現(xiàn)一個(gè)測(cè)試方法(即名稱(chēng)以?test ?) 開(kāi)頭的方法,以便執(zhí)行特定的測(cè)試代碼:

import unittest

class DefaultWidgetSizeTestCase(unittest.TestCase):
    def test_default_widget_size(self):
        widget = Widget('The widget')
        self.assertEqual(widget.size(), (50, 50))

請(qǐng)注意,為了測(cè)試某些內(nèi)容,我們使用 TestCase 基類(lèi)提供的 ?assert*() ?方法之一。如果測(cè)試失敗,將引發(fā)異常并帶有解釋性消息,并且 ?unittest ?會(huì)將測(cè)試用例標(biāo)識(shí)為失敗。任何其他異常都將被視為錯(cuò)誤。

測(cè)試可能很多,并且它們的設(shè)置可能是重復(fù)的。幸運(yùn)的是,我們可以通過(guò)實(shí)現(xiàn)一個(gè)名為 setUp() 的方法來(lái)分解設(shè)置代碼,測(cè)試框架將為我們運(yùn)行的每個(gè)測(cè)試自動(dòng)調(diào)用該方法:

import unittest

class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        self.widget = Widget('The widget')

    def test_default_widget_size(self):
        self.assertEqual(self.widget.size(), (50,50),
                         'incorrect default size')

    def test_widget_resize(self):
        self.widget.resize(100,150)
        self.assertEqual(self.widget.size(), (100,150),
                         'wrong size after resize')
注意
各種測(cè)試的運(yùn)行順序是通過(guò)相對(duì)于字符串的內(nèi)置排序?qū)y(cè)試方法名稱(chēng)進(jìn)行排序來(lái)確定的。

如果 setUp() 方法在測(cè)試運(yùn)行時(shí)引發(fā)異常,框架將認(rèn)為測(cè)試已遭受錯(cuò)誤,并且不會(huì)執(zhí)行測(cè)試方法。

類(lèi)似地,我們可以提供一個(gè) tearDown() 方法,該方法在測(cè)試方法運(yùn)行后進(jìn)行整理:

import unittest

class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        self.widget = Widget('The widget')

    def tearDown(self):
        self.widget.dispose()

如果 setUp() 成功,則無(wú)論測(cè)試方法是否成功,都將運(yùn)行 tearDown()。

這種用于測(cè)試代碼的工作環(huán)境稱(chēng)為測(cè)試夾具。創(chuàng)建一個(gè)新的 TestCase 實(shí)例作為用于執(zhí)行每個(gè)單獨(dú)的測(cè)試方法的唯一測(cè)試夾具。因此每次測(cè)試都會(huì)調(diào)用一次 setUp()tearDown() 和 __init__()。

建議您使用 TestCase 實(shí)現(xiàn),根據(jù)測(cè)試的功能將測(cè)試組合在一起。unittest為此提供了一種機(jī)制:測(cè)試套件,由unittestTestSuite類(lèi)表示。在大多數(shù)情況下,調(diào)用unittest.main()將做正確的事情,并為您收集所有模塊的測(cè)試用例并執(zhí)行它們。

但是,如果要自定義測(cè)試套件的構(gòu)建,可以自己操作:

def suite():
    suite = unittest.TestSuite()
    suite.addTest(WidgetTestCase('test_default_widget_size'))
    suite.addTest(WidgetTestCase('test_widget_resize'))
    return suite

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite())

您可以將測(cè)試用例和測(cè)試套件的定義與它們要測(cè)試的代碼(例如 ?widget.py?)放在相同的模塊中,但是將測(cè)試代碼放在單獨(dú)的模塊中有幾個(gè)優(yōu)點(diǎn),例如 ?test_widget.py? :

  • 測(cè)試模塊可以從命令行獨(dú)立運(yùn)行。

  • 測(cè)試代碼可以更容易地與附帶的代碼分開(kāi)。

  • 在沒(méi)有充分理由的情況下更改測(cè)試代碼以適應(yīng)它測(cè)試的代碼的誘惑較小。
  • 與它測(cè)試的代碼相比,測(cè)試代碼的修改頻率應(yīng)該低得多。
  • 測(cè)試的代碼可以更容易地重構(gòu)。
  • 無(wú)論如何,用C編寫(xiě)的模塊的測(cè)試必須在單獨(dú)的模塊中,那么為什么不保持一致呢?
  • 如果測(cè)試策略發(fā)生更改,則無(wú)需更改源代碼。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)