当然,只需使用自动使用的夹具即可。这是
pytestdocs中的相关位置。在您的示例中,更改将引入一个额外的固定装置(我将其命名为
_request_google_page):
from bs4 import BeautifulSoupimport pytestimport 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_pre == 200 def test_html_title(self): soup = BeautifulSoup(self._response.content, "html.parser") assert soup.title.text.upper() == "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
from bs4 import BeautifulSoupimport pytestimport 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 = googleclass TestGoogle: def test_alive(self): assert self._response.status_pre == 200 def test_html_title(self): soup = BeautifulSoup(self._response.content, "html.parser") assert soup.title.text.upper() == "GOOGLE"


