W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本節(jié)描述了如何在每個(gè)模塊/類/函數(shù)的基礎(chǔ)上實(shí)現(xiàn)?fixture
(setup和teardown測(cè)試狀態(tài))的經(jīng)典和流行的方法。
雖然這些設(shè)置/拆卸方法對(duì)于那些使用過(guò)?unittest
?或?nose
?的人來(lái)說(shuō)很簡(jiǎn)單,也很熟悉,但你也可以考慮使用pytest更強(qiáng)大的?fixture
?機(jī)制,它利用了依賴注入的概念,允許使用更模塊化和更可伸縮的方法來(lái)管理測(cè)試狀態(tài),特別是對(duì)于大型項(xiàng)目和功能測(cè)試。您可以在同一個(gè)文件中混合使用這兩種?fixture
?機(jī)制,但是可以使用?unittest
?的測(cè)試方法。?TestCase
?子類不能接收?fixture
?參數(shù)。
如果你在一個(gè)模塊中有多個(gè)測(cè)試函數(shù)和測(cè)試類,你可以選擇實(shí)現(xiàn)以下?fixture
?方法,這些方法通常會(huì)被所有的函數(shù)調(diào)用一次:
def setup_module(module):
""" setup any state specific to the execution of the given module."""
def teardown_module(module):
"""teardown any state that was previously setup with a setup_module
method.
"""
從 pytest-3.0 開(kāi)始,?module
?參數(shù)是可選的。
同樣,下面的方法在類級(jí)別之前和之后的所有測(cè)試方法類被稱為:
@classmethod
def setup_class(cls):
"""setup any state specific to the execution of the given class (which
usually contains tests).
"""
@classmethod
def teardown_class(cls):
"""teardown any state that was previously setup with a call to
setup_class.
"""
類似地,以下方法在每個(gè)方法調(diào)用:
def setup_method(self, method):
"""setup any state tied to the execution of the given method in a
class. setup_method is invoked for every test method of a class.
"""
def teardown_method(self, method):
"""teardown any state that was previously setup with a setup_method
call.
"""
從pytest-3.0開(kāi)始,?method
?參數(shù)是可選的。
如果你更愿意直接在模塊級(jí)定義測(cè)試函數(shù),你也可以使用以下函數(shù)來(lái)實(shí)現(xiàn)?fixture
?:
def setup_function(function):
"""setup any state tied to the execution of the given function.
Invoked for every test function in the module.
"""
def teardown_function(function):
"""teardown any state that was previously setup with a setup_function
call.
"""
從 pytest-3.0 開(kāi)始,?function
?參數(shù)是可選的。
備注:
每個(gè)測(cè)試過(guò)程可以多次調(diào)用?setup/teardown
?對(duì)。
如果對(duì)應(yīng)的?setup
?函數(shù)存在并且失敗或者被跳過(guò),則不會(huì)調(diào)用?Teardown
?函數(shù)。
在pytest-4.2之前,?xunit
?風(fēng)格的函數(shù)不遵守?fixture
?的作用域規(guī)則,因此,例如,可以在會(huì)話作用域的自動(dòng)使用?fixture
?之前調(diào)用?setup_method
?。
現(xiàn)在,?xunit
?風(fēng)格的函數(shù)與?fixture
?機(jī)制集成在一起,并遵守調(diào)用中涉及的?fixture
?的適當(dāng)范圍規(guī)則。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: