Ars*_*nko 5 python testing flask python-3.x
在冒烟测试期间,我想确保 Flask 应用程序正确处理一些基本请求。这涉及异步启动 Flask 应用程序:
class TestSmoke(unittest.TestCase):
@staticmethod
def run_server():
app.run(port=49201)
@classmethod
def setUpClass(cls):
cls.flaskProcess = multiprocessing.Process(target=TestSmoke.run_server)
cls.flaskProcess.start()
Run Code Online (Sandbox Code Playgroud)
然后运行测试来执行requests库的请求。
如果代码保持原样,测试通常会在服务器实际启动之前ConnectionRefusedError运行,这会导致. 为了防止这种情况发生,我将以下代码附加到setUpClass:
while True:
try:
requests.get("http://localhost:49201/", timeout=0.5)
return
except requests.exceptions.ConnectionError:
pass
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但看起来很丑。鉴于测试用例由 Flask 应用程序控制,一旦应用程序准备好处理请求,就应该有一种方法可以通知它。不幸的是,我发现的最接近的东西是got_first_request,这没有帮助(除非我再次轮询服务器)。
异步运行时如何确定 Flask 应用程序已启动并准备好处理请求?
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |