将 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
错误。我试过了
/api/v1/hello-world
api/v1/hello-world
v1/hello-world
/v1/hello-world
如果我删除 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
我有一个 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
错误。我试过了
/api/v1/hello-world
api/v1/hello-world
v1/hello-world
/v1/hello-world
如果我删除 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