我正在使用django-selenium将 Selenium 测试功能添加到现有的单元测试中。
我的 Selenium 测试依赖于在我的机器上运行的 Web 服务器,这将通过像这样运行我们的 django 应用程序来触发;main.py -a
所以我在 Selenium 测试中要做的第一件事就是启动我这样设置的服务器;
def start_server():
path = os.path.join(os.getcwd(), 'main.py -a')
server_running = is_server_running()
if server_running is False:
server = subprocess.Popen('cmd.exe', stdin= subprocess.PIPE, stdout= subprocess.PIPE)
stdout, stderr = server.communicate(input='%s\n' % path)
print 'Server error:\n{0}\n'.format(stderr)
server_running = is_server_running()
return server_running
但是,当我这样做时,网络服务器会在命令行中接管 django 测试过程的执行。我认为我应该这样做的方式是在单独的进程中启动命令提示符,然后main.py -a
在该进程中触发命令。
这是正确的想法吗?如果是这样,我该如何修改该函数以生成一个新进程并启动我的命令?我试图运行'cmd.exe',Process(target=path
但我无法让它工作。谢谢 :)