将 PyTest 与拥抱和 base_url 结合使用

Using PyTest with hug and base_url

我有一个 api 设置为

import hug
API = hug.API(__name__).http.base_url='/api'

@hug.get('/hello-world', versions=1)
def hello_world(response):
    return hug.HTTP_200

我正在尝试使用 PyTest 对其进行测试。

我正在尝试使用

测试路线
import pytest
import hug
from myapi import api

...

def test_hello_world_route(self):
    result = hug.test.get(myapp, 'v1/hello-world')
    assert result.status == hug.HTTP_200

如何测试配置了 http.base_url 的 hug 路由?

无论路由路径如何,我都会收到 404 错误。我试过了

如果我删除 hug.API().http.base_url 设置,那么 v1/hello-world 可以正常工作,但我的要求是进行 base_url 设置。

我查看了官方 hug github 存储库和 ProgramTalk 等各种在线资源的文档,但我没有取得太大的成功。

有什么建议吗?

您应该将您的模块 (myapp) 作为第一个参数发送给 hug.test.get()

那么你可以使用完整路径 /api/v1/hello-world 作为第二个参数。

这是一个最小的工作示例:

# myapp.py

import hug

api = hug.API(__name__).http.base_url='/api'

@hug.get('/hello-world', versions=1)
def hello_world(response):
    return hug.HTTP_200

.

# tests.py

import hug
import myapp


def test_hello_world_route():
    result = hug.test.get(myapp, '/api/v1/hello-world')
    assert result.status == hug.HTTP_200

.

# run in shell
pytest tests.py