我怎么知道Flask应用程序已准备好处理请求而不实际轮询它?

时间:2015-05-30 16:48:40

标签: python python-3.x testing flask

在冒烟测试期间,我想确保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()

然后运行使用requests库执行请求的测试。

如果代码保持原样,那么测试通常在服务器实际启动之前运行,从而产生ConnectionRefusedError。为防止这种情况发生,我将以下代码添加到setUpClass

while True:
    try:
        requests.get("http://localhost:49201/", timeout=0.5)
        return
    except requests.exceptions.ConnectionError:
        pass

虽然这有效但看起来很难看。鉴于测试用例控制着Flask应用程序,应该有一种方法可以在应用程序准备好处理请求时得到通知。不幸的是,我发现的最接近的是got_first_request,这对我没有帮助(除非我再一次轮询服务器)。

如何确定Flask应用程序已启动并准备好在异步运行时处理请求?

0 个答案:

没有答案