您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

通过自我而不是方法参数的类的Pytest夹具

通过自我而不是方法参数的类的Pytest夹具

当然,只需使用自动使用的夹具即可。这是pytestdocs中的相关位置。在您的示例中,更改将引入一个额外的固定装置(我将其命名为_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_pagescope='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"
其他 2022/1/1 18:31:37 有268人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶