pytest fixture-fixture可以內(nèi)省請(qǐng)求的測(cè)試上下文

2022-03-18 14:14 更新

??fixture??函數(shù)可以接受請(qǐng)求對(duì)象來(lái)內(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í)行,沒(méi)有什么變化:

$ 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ù)器名稱。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)