0

我正在使用 Flask Restx 构建 API。我编写了一个通用异常处理程序,它将抛出 Json 格式的错误消息和代码。

@app.errorhandler(APIError)
def handle_invalid_usage(error):
    logger.opt(exception=True).error(error)
    response = jsonify(error.to_dict())
    response.status_code = error.status_code
    return response

我正在尝试使用 pytest 编写单元测试来测试错误条件(找不到资源)。我的单元测试确实只返回 500 内部服务器错误(response.status_code),而不是通过错误处理程序并返回 404。当我直接使用 Postman 测试它时,它工作得很好。

@pytest.fixture(scope="session")
def app():
    app = create_app()
    return app


@pytest.fixture
def client(app):
    return app.test_client()

def test_get_sequence_resource_not_found(mocker: MockerFixture, client: FlaskClient):
    mocked = mocker.patch("service.ViewSequenceService.get_sequence")
    mocked.side_effect = ResourceNotFound('Sequence id Not Present')
    response = client.get("/sequence/f15a9f6e-7a1d-4d12-99c3-fb80d4bc98a1")
    json_data = json.loads(response.data)
    assert response.status_code == 404
    assert json_data['payload']['message'] == 'Sequence id Not Present'
    assert json_data['payload']['status'] == 404
4

0 回答 0