W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
?unittest
?庫(kù)提供了 ?@skipIf
? 和 ?@skipUnless
? 裝飾器,允許你跳過(guò)測(cè)試,如果你事先知道這些測(cè)試在某些條件下會(huì)失敗。
例如,如果你的測(cè)試需要一個(gè)特定的可選庫(kù)才能成功,你可以用 ?@skipIf
? 來(lái)裝飾測(cè)試用例。然后,測(cè)試運(yùn)行器將報(bào)告測(cè)試沒(méi)有被執(zhí)行以及原因,而不是測(cè)試失敗或完全省略測(cè)試。
為了補(bǔ)充這些測(cè)試跳過(guò)行為,Django 提供了兩個(gè)額外的跳過(guò)裝飾器。這些裝飾器不是測(cè)試一個(gè)通用的布爾值,而是檢查數(shù)據(jù)庫(kù)的能力,如果數(shù)據(jù)庫(kù)不支持一個(gè)特定的命名特性,則跳過(guò)測(cè)試。
裝飾器使用一個(gè)字符串標(biāo)識(shí)符來(lái)描述數(shù)據(jù)庫(kù)特征。這個(gè)字符串對(duì)應(yīng)于數(shù)據(jù)庫(kù)連接特征類(lèi)的屬性。
如果支持某個(gè)命名的數(shù)據(jù)庫(kù)功能,則跳過(guò)裝飾測(cè)試或 ?TestCase
?
例如,如果數(shù)據(jù)庫(kù)支持事務(wù),下面的測(cè)試將不會(huì)被執(zhí)行(例如,在PostgreSQL 下,它將 不 會(huì)運(yùn)行,但在 MySQL 的 MyISAM 表下卻可以):
class MyTests(TestCase):
@skipIfDBFeature('supports_transactions')
def test_transaction_behavior(self):
# ... conditional test code
pass
如果不支持某個(gè)命名的數(shù)據(jù)庫(kù)功能,則跳過(guò)裝飾測(cè)試或 ?TestCase
?
例如,接下來(lái)的測(cè)試僅在支持事務(wù)的數(shù)據(jù)庫(kù)下執(zhí)行(如:可以是PostgreSQL,但不可以是使用MyISAM數(shù)據(jù)庫(kù)引擎的MySQL):
class MyTests(TestCase):
@skipUnlessDBFeature('supports_transactions')
def test_transaction_behavior(self):
# ... conditional test code
pass
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: