当然,只需使用自动使用的夹具即可。这是pytest
docs中的相关位置。在您的示例中,更改将引入一个额外的固定装置(我将其命名为_request_google_page
):
from bs4 import BeautifulSoup
import pytest
import requests
@pytest.fixture()
def google():
return requests.get("https://www.google.com")
class TestGoogle:
@pytest.fixture(autouse=True)
def _request_google_page(self, google):
self._response = google
def test_alive(self):
assert self._response.status_code == 200
def test_html_title(self):
soup = BeautifulSoup(self._response.content, "html.parser")
assert soup.title.text.upper() == "GOOGLE"
您甚至可以完全放下google
灯具并将代码移至_request_google_page
:
@pytest.fixture(autouse=True)
def _request_google_page(self):
self._response = requests.get("https://www.google.com")
请注意,_request_google_page
默认情况下每个测试都会调用一次,因此每个测试都会获得新的响应。如果您希望响应被初始化一次并在TestGoogle
类中的所有测试中重新使用,请调整灯具范围(scope='class'
for_request_google_page
和scope='module'
or scope='session'
for google
)。例:
from bs4 import BeautifulSoup
import pytest
import requests
@pytest.fixture(scope='module')
def google():
return requests.get("https://www.google.com")
@pytest.fixture(autouse=True, scope='class')
def _request_google_page(request, google):
request.cls._response = google
class TestGoogle:
def test_alive(self):
assert self._response.status_code == 200
def test_html_title(self):
soup = BeautifulSoup(self._response.content, "html.parser")
assert soup.title.text.upper() == "GOOGLE"