我正在尝试编写测试,测试django应用程序是否可运行。我只是想尝试运行django服务器,如果一切正常,返回代码0否则另一个代码。
python manage.py runserver
这个命令运行无限循环,我需要通过CTRL + C来阻止它。这就是问题所在。我想运行它几秒钟。
注意:我在linux上运行django。
对于在测试中检查的情况,您也可以使用django.test.testcases.LiveServerTestCase
。该课程将在后台启动您的应用程序。
这比仅运行Django 5秒更稳定,因为无论出于何种原因,启动应用程序可能需要5秒多的时间。
在Linux系统上,您可以使用timeout
。例如:
$ timeout 5 python manage.py runserver
它将运行该命令5秒钟,然后终止该程序。如果命令超时 - 我们想要的东西 - 退出代码是124.如果命令超时(这通常是因为发生错误) - 退出代码是内部命令的退出代码(所以python manage.py runserver
)。
所以我们可以让它像以下一样工作:
#!/bin/bash
timeout 5 python manage.py runserver
# return non-zero exit code in case exit code of timeout is not 124
test "$?" -eq "124"
请注意,有更好的方法来测试应用程序,并通过简单地检查服务器是否运行来测试应用程序,根本不是详尽无遗的:从用户抓取页面的那一刻起,很多事情都可能出错。