??fixture
??函數(shù)可以接受請(qǐng)求對(duì)象來內(nèi)省請(qǐng)求測(cè)試函數(shù)、類或模塊上下文。進(jìn)一步擴(kuò)展前面的??smtp_connection fixture?
?示例,讓我們從使用我們的??fixture
??的測(cè)試模塊中讀取一個(gè)可選的服務(wù)器URL:
# content of conftest.py
import pytest
import smtplib
@pytest.fixture(scope="module")
def smtp_connection(request):
server = getattr(request.module, "smtpserver", "smtp.gmail.com")
smtp_connection = smtplib.SMTP(server, 587, timeout=5)
yield smtp_connection
print("finalizing {} ({})".format(smtp_connection, server))
smtp_connection.close()
我們使用請(qǐng)求。模塊屬性可以獲得一個(gè)??smtpserver
??屬性的測(cè)試模塊。如果我們只是再次執(zhí)行,沒有什么變化:
$ pytest -s -q --tb=no test_module.py
FFfinalizing <smtplib.SMTP object at 0xdeadbeef0002> (smtp.gmail.com)
========================= short test summary info ==========================
FAILED test_module.py::test_ehlo - assert 0
FAILED test_module.py::test_noop - assert 0
2 failed in 0.12s
讓我們快速創(chuàng)建另一個(gè)測(cè)試模塊,在其模塊命名空間中實(shí)際設(shè)置服務(wù)器 URL:
# content of test_anothersmtp.py
smtpserver = "mail.python.org" # will be read by smtp fixture
def test_showhelo(smtp_connection):
assert 0, smtp_connection.helo()
運(yùn)行:
$ pytest -qq --tb=short test_anothersmtp.py
F [100%]
================================= FAILURES =================================
______________________________ test_showhelo _______________________________
test_anothersmtp.py:6: in test_showhelo
assert 0, smtp_connection.helo()
E AssertionError: (250, b'mail.python.org')
E assert 0
------------------------- Captured stdout teardown -------------------------
finalizing <smtplib.SMTP object at 0xdeadbeef0003> (mail.python.org)
========================= short test summary info ==========================
FAILED test_anothersmtp.py::test_showhelo - AssertionError: (250, b'mail....
上述示例??smtp_connection fixture
??函數(shù)從模塊名稱空間獲取我們的郵件服務(wù)器名稱。
更多建議: