Конечно, просто используйте автоматическое устройство. Вот соответствующее место в pytest
документах . В вашем примере изменение представило бы дополнительный прибор (я назвал его _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'
для _request_google_page
и scope='module'
или scope='session'
для google
).