gpt4 book ai didi

python - 从 Django 单元测试中获取通过或失败的输出

转载 作者:行者123 更新时间:2023-11-28 20:34:42 25 4
gpt4 key购买 nike

对于我的 Django 项目,我试图从 python manage.py test 获取 0 或 1 输出,以确定是否所有测试都已通过。

我想在 bash 脚本中运行测试,然后让脚本知道是否所有测试都已通过,如果是,则继续执行其他操作。

这是我能得到的最接近的,但输出不正确

output=$(python manage.py test)
output=$(python manage.py test 0 2>&1)

最佳答案

您正在寻找 manage.py test 命令的退出状态 ($?),which exits with a status of 1 whenever at least one test fails (or for any error), otherwise exits with 0 when all tests pass .

Stdlib unittest also has the same behavior .

所以本质上,你的前提是错误的,实际上你的检查是不正确的——你将 python manage.py test 的 STDOUT 保存在变量 output 中第一个示例,第二个示例将引发错误,除非您有一个名为 0 的包,其中包含模块 test*.py;如果您有这样的包,那么第二个命令会将 manage.py test 0 命令中的 STDOUT 和 STDERR 保存为变量 output

您可以使用 $? 检查 last 命令的退出状态:

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

关于python - 从 Django 单元测试中获取通过或失败的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59023809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com