Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Django单元测试获得通过或失败输出_Python_Django_Bash_Testing - Fatal编程技术网

Python 从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命令的退出状态($?) 因此,本质上,您的前

对于我的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
保存在变量
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