将PyTest与hug和base_url一起使用

时间:2018-03-08 06:02:01

标签: python pytest hug

我有一个用

设置的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的拥抱路线?

无论路径路径如何,我都会遇到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

我已经阅读了官方拥抱github repo和各种在线资源(如ProgramTalk)的文档,但我没有取得多大成功。

任何建议?

1 个答案:

答案 0 :(得分:3)

您应该将模块(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