python 我是如何嘲笑httpx的,connectError`使用httpx-pytest包?

px9o7tmv  于 2023-04-28  发布在  Python
关注(0)|答案(1)|浏览(209)

我想为我的API模拟ConnectionError。我正在为一个软件创建一个python包,如果在localhost:8080上运行,它将正确地给予结果。但如果软件没有运行,那么我想抓住它。我可以使用httpx.ConnectError编写函数来获取这个异常,但是我如何编写测试呢?
我的功能是这样的

def get_workspace(self, workspace: str) -> Union[WorkspaceModel, GSResponse]:
        try:
            Client = self.http_client
            responses = Client.get(f"workspaces/{workspace}")
            if responses.status_code == 200:
                return WorkspaceModel.parse_obj(responses.json())
            else :
                results = self.response_recognise(responses)
                return results
        except httpx.TimeoutException as exc:
            res = {}
            res['code'] = 504
            res['response'] = "Timeout Error"
            return GSResponse.parse_obj(res)
        except httpx.NetworkError as exc:
            res = {}
            res['code'] = 503
            res['response'] = "Geoserver unavailable"
            return GSResponse.parse_obj(res)
wljmcqd8

wljmcqd81#

使用pytest-httpx,您可以模拟httpx引发任何类型的异常,这要归功于httpx_mock。add_exception。
你的测试用例看起来应该是这样的:

import httpx
import pytest
from pytest_httpx import HTTPXMock

def test_exception_raising(httpx_mock: HTTPXMock):
    httpx_mock.add_exception(httpx.ConnectError())

    # Your code performing the http call here.

相关问题