小编ss2*_*025的帖子

FastAPI - 将路由前缀添加到 TestClient

我有一个 FastAPI 应用程序,其路由前缀为/api/v1.

当我运行测试时它会抛出404. 我发现这是因为TestClient无法找到 处的路线/ping,并且当测试用例中的路线更改为 时,它可以正常工作/api/v1/ping

有没有一种方法可以避免根据前缀更改所有测试函数中的所有路由?这似乎很麻烦,因为有很多测试用例,而且我不想在测试用例中对路由前缀进行硬编码依赖。TestClient有没有一种方法可以让我像在 中那样配置前缀app,并像在 中提到的那样简单地提及路由routes.py

路线.py

from fastapi import APIRouter

router = APIRouter()

@router.get("/ping")
async def ping_check():
    return {"msg": "pong"}
Run Code Online (Sandbox Code Playgroud)

主要.py

from fastapi import FastAPI
from routes import router

app = FastAPI()
app.include_router(prefix="/api/v1")
Run Code Online (Sandbox Code Playgroud)

在测试文件中我有:

测试.py

from main import app
from fastapi.testclient import TestClient

client = TestClient(app)

def test_ping():
    response = client.get("/ping")
    assert response.status_code == 200
    assert response.json() == {"msg": …
Run Code Online (Sandbox Code Playgroud)

python starlette fastapi

11
推荐指数
1
解决办法
2万
查看次数

Python Bottle - "重定向"和"返回模板"之间的区别

我有两个关于瓶子的问题:

1)有什么区别:

redirect('/login')return template('login')

是不是都会让用户同一/login页面?

2)我可以redirect像我一样传递参数return吗?

例如:

这是否有效:redirect('/login', userName="foo")正如我们在这种情况下所做的那样:

return template('login', userName="foo")

python redirect bottle

3
推荐指数
1
解决办法
7832
查看次数

Perl:在"unless -e"语句中找不到打印变量

我有这行代码:

unless((-e $FileOne) && (-e $Filetwo) && (-e $FileThree)) {die "$!\n";}
Run Code Online (Sandbox Code Playgroud)

其中,$变量包含具有完整路径的文件名.

此语句检查是否所有3个文件都存在,否则,它将die.

是否有任何Perl'特殊变量'可以在die声明中使用,让我知道三个文件中哪一个丢失(即三个-e检查中哪一个失败)?

提前致谢.

perl

2
推荐指数
1
解决办法
481
查看次数

为什么python gevent.joinall执行所有greenlets

我有以下Python代码:

>>> import gevent
>>> from gevent import monkey; monkey.patch_all()
>>>
>>> def fooFn(k):
...     return 'gevent_'+k
...
>>> threads = []
>>> threads.append(gevent.spawn(fooFn,'0'))
>>> threads.append(gevent.spawn(fooFn,'1'))
>>>
>>> gevent.joinall([threads[1]])
>>>
>>> print threads[1].value
gevent_1
>>> print threads[0].value
gevent_0
>>>
Run Code Online (Sandbox Code Playgroud)

如上所示,threads[0].value从中获得了适当的值fooFn。这意味着threads[0]greenlet已执行。

当我仅将threads[1]greenlet 传递给时,为什么会发生这种情况gevent.joinall

我如何确保仅执行实际传递给的那些greenlet gevent.joinall

python gevent greenlets

0
推荐指数
1
解决办法
2092
查看次数

标签 统计

python ×3

bottle ×1

fastapi ×1

gevent ×1

greenlets ×1

perl ×1

redirect ×1

starlette ×1