python - 从 pytest 测试中调用烧瓶服务器
问题描述
import sys
import os
import logging
import requests
import json
import pytest
from multiprocessing import Process
from flask_file import main
@pytest.fixture
def endpoint():
return "http://127.0.0.1:8888/"
def test_send_request(endpoint: str):
server = Process(target=main)
server.start()
time.sleep(30)
# check that the service is up and running
service_up = requests.get(f"{endpoint}")
server.terminate()
server.join()
我想在测试中在本地启动和关闭服务器以测试一些请求。我知道服务器本身可以工作,因为我可以从 flask_file 本身运行 main() python flask_file
,它会启动服务器……我可以 ping 它就好了。当我使用上述方法时,测试似乎确实完成了 30 多秒的睡眠而没有失败,但在这 30 多岁时,我无法在浏览器上打开端点并看到预期的“hello world”。
解决方案
当您运行 Flask 内置开发服务器时(例如flask run
或app.run()
,只有一个连接是可能的。所以当您的测试访问应用程序时,您无法通过浏览器访问它。
无论如何,您应该重写您的测试和夹具以使用test_client
,请参阅官方文档
推荐阅读
- r - 如何在 foreach() 循环上插入绘图?
- crystal-reports - 如何将行组合成组并将其他列的值相加?
- reactjs - 如何像缺口 OutlinedInput 一样设置 InputAdornment 的样式?
- node.js - 是否可以在节点 js 中为 GCE 自动生成密码
- json - 使用powershell将键值对添加到json文件
- postgresql - PostgreSQL:创建模式,授予权限失败
- ios - 在 Swift 中优化从 Firestore 获取
- spring-boot - 如何共享 Spring Boot 应用程序
- javascript - 确定 HighStock 图表中可用的趋势线类型
- java - 使用 RestTemplate 复制精确的 CURL 请求