试图用Python调用shell命令,什么都没得到

时间:2013-09-16 15:53:58

标签: python django casperjs

我正在尝试使用casperjs在我的网络应用上运行一些集成测试。为此,我有以下测试类:

from django.conf import settings
import unittest
import subprocess

class MyTest(unittest.TestCase):
    def test_something(self):
        print "begin"
        command = "../../n1k0-casperjs-76fc831/bin/casperjs test.js"
        p = subprocess.Popen(command, shell=True, bufsize=0, stdout=subprocess.PIPE, universal_newlines=True)
        p.wait()
        output = p.stdout.read()
        p.stdout.close()
        print output
        print "end"

当我在django或classif python shell中执行此代码时,我得到了js脚本的输出。然而,当用django调用它时,我得到了这个:

begin

end

你们知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

你的shell命令是否可能实际输出到stderr?

要将stderr重定向到stdout,请尝试此命令来调用命令:

p = subprocess.Popen(command, shell=True, bufsize=0, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)