W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Pytest將測(cè)試運(yùn)行期間活動(dòng)??fixture
??的數(shù)量最小化。如果您有一個(gè)參數(shù)化的??fixture
??,那么使用它的所有測(cè)試將首先與一個(gè)實(shí)例一起執(zhí)行,然后在創(chuàng)建下一個(gè)??fixture
??實(shí)例之前調(diào)用終結(jié)器。除此之外,這簡化了對(duì)創(chuàng)建和使用全局狀態(tài)的應(yīng)用程序的測(cè)試。
下面的例子使用了兩個(gè)參數(shù)化的??fixture
??,其中一個(gè)的作用域是基于每個(gè)模塊的,所有的函數(shù)都執(zhí)行print調(diào)用來顯示設(shè)置/拆卸流程:
# content of test_module.py
import pytest
@pytest.fixture(scope="module", params=["mod1", "mod2"])
def modarg(request):
param = request.param
print(" SETUP modarg", param)
yield param
print(" TEARDOWN modarg", param)
@pytest.fixture(scope="function", params=[1, 2])
def otherarg(request):
param = request.param
print(" SETUP otherarg", param)
yield param
print(" TEARDOWN otherarg", param)
def test_0(otherarg):
print(" RUN test0 with otherarg", otherarg)
def test_1(modarg):
print(" RUN test1 with modarg", modarg)
def test_2(otherarg, modarg):
print(" RUN test2 with otherarg {} and modarg {}".format(otherarg, modarg))
讓我們以詳細(xì)模式運(yùn)行測(cè)試,并查看打印輸出:
$ pytest -v -s test_module.py
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y -- $PYTHON_PREFIX/bin/python
cachedir: .pytest_cache
rootdir: /home/sweet/project
collecting ... collected 8 items
test_module.py::test_0[1] SETUP otherarg 1
RUN test0 with otherarg 1
PASSED TEARDOWN otherarg 1
test_module.py::test_0[2] SETUP otherarg 2
RUN test0 with otherarg 2
PASSED TEARDOWN otherarg 2
test_module.py::test_1[mod1] SETUP modarg mod1
RUN test1 with modarg mod1
PASSED
test_module.py::test_2[mod1-1] SETUP otherarg 1
RUN test2 with otherarg 1 and modarg mod1
PASSED TEARDOWN otherarg 1
test_module.py::test_2[mod1-2] SETUP otherarg 2
RUN test2 with otherarg 2 and modarg mod1
PASSED TEARDOWN otherarg 2
test_module.py::test_1[mod2] TEARDOWN modarg mod1
SETUP modarg mod2
RUN test1 with modarg mod2
PASSED
test_module.py::test_2[mod2-1] SETUP otherarg 1
RUN test2 with otherarg 1 and modarg mod2
PASSED TEARDOWN otherarg 1
test_module.py::test_2[mod2-2] SETUP otherarg 2
RUN test2 with otherarg 2 and modarg mod2
PASSED TEARDOWN otherarg 2
TEARDOWN modarg mod2
============================ 8 passed in 0.12s =============================
您可以看到,參數(shù)化的模塊范圍的??modarg
??資源導(dǎo)致了測(cè)試執(zhí)行的順序,從而導(dǎo)致了盡可能少的活動(dòng)資源。mod1參數(shù)化資源的終結(jié)器在mod2資源設(shè)置之前執(zhí)行。
特別要注意??test_0
??是完全獨(dú)立的,并且是第一個(gè)完成的。然后用mod1執(zhí)行??test_1
??,用mod1執(zhí)行??test_2
??,用mod2執(zhí)行??test_1
??,最后用mod2執(zhí)行??test_2
??。
其他參數(shù)化的資源(具有函數(shù)作用域)在每次使用它的測(cè)試之前設(shè)置,然后在測(cè)試之后刪除。
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)系方式:
更多建議: