子进程不捕获Django测试中的所有标准输出,使用Nose运行



使用子进程执行测试,如下所示:

subprocess.Popen(["./manage.py", "test", "-x", "--settings=settings_test"], stdout=subprocess.PIPE, stdin=subprocess.PIPE).communicate()

只捕获测试输出的初始部分。所以我得到返回的元组

 ("x1b[32mUsing database: developx1b[0mnx1b[33mRunning tests against sqlite3 in memory databasex1b[0mnnosetests --verbosity 1 -xnCreating test database for alias 'default'...nDestroying test database for alias 'default'...n", None)
但是,这遗漏了关键的最后三行
Ran 260 tests in 70.131s
OK (SKIP=1)

是否有方法使用子流程捕获此输出?

这是因为摘要是为错误编写的,所以您也需要捕获它。

sub = subprocess.Popen(
        ["./manage.py", "test", "-x", "--settings=settings_test"],
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = sub.communicate()
# err should have the summary

相关内容

最新更新