0

我正在尝试使用 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

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

4

1 回答 1

1

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

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

p = subprocess.Popen(command, shell=True, bufsize=0, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
于 2013-09-16T16:09:56.240 回答