Python 从Django单元测试获得通过或失败输出
对于我的Django项目,我试图从Python 从Django单元测试获得通过或失败输出,python,django,bash,testing,Python,Django,Bash,Testing,对于我的Django项目,我试图从python manage.py test获取0或1输出,以确定是否所有测试都已通过 我想在bash脚本中运行测试,然后让脚本知道是否所有测试都通过了,如果通过了,继续执行其他操作 这是我能得到的最接近的结果,但输出不正确 output=$(python manage.py test) output=$(python manage.py test 0 2>&1) 您正在查找manage.py test命令的退出状态($?) 因此,本质上,您的前
python manage.py test
获取0或1输出,以确定是否所有测试都已通过
我想在bash脚本中运行测试,然后让脚本知道是否所有测试都通过了,如果通过了,继续执行其他操作
这是我能得到的最接近的结果,但输出不正确
output=$(python manage.py test)
output=$(python manage.py test 0 2>&1)
您正在查找
manage.py test
命令的退出状态($?
)
因此,本质上,您的前提是错误的,实际上您的检查是不正确的——您正在将标准输出从python manage.py test
保存在变量output
中。在第一个示例中,您的第二个示例将引发错误,除非您有一个名为0
的包,其中包含模块test*.py
;如果您有这样一个包,那么第二个命令将把manage.py test 0
命令中的STDOUT和STDERR都保存为变量output
您可以使用$?
检查最后一个命令的退出状态:
python manage.py test
if [ $? = 0 ]; then
# Success: do stuff
else
# Failure: do stuff
fi
但是有一种更好的方法,Shell可以在if
中隐式检查退出状态:
if python manage.py test; then
# Success: do stuff
else
# Failure: do stuff
fi
如果您不喜欢STDOUT/STDERR,可以将这些流重定向到
/dev/null
,POSIX ly:
if python manage.py test >/dev/null 2>&1; then
# Success: do stuff
else
# Failure: do stuff
fi
Bash ism(适用于其他高级shell):
if python manage.py test &>/dev/null; then
# Success: do stuff
else
# Failure: do stuff
fi