python popen返回,Python2.7子进程popen不返回

我目前正在使用python 2.7中的pytest进行一组集成测试,这些测试执行以下操作:

1)在本地计算机的后台运行服务器二进制文件

2)向服务器发送请求并验证结果

3)终止后台服务器进程

一切似乎都正常,除了我无法终止在我的计算机上运行的服务器进程。尽管它继续在我的计算机上运行,但python似乎已经忘记了它;我的

Popen

对象是

None

.

AttributeError: 'NoneType' object has no attribute 'terminate'

有没有什么想法是什么造成的?我是不是漏掉了一些显而易见的东西?

import time

import subprocess

server_background_process_pipe = None

def setup_module():

# Start the test server in the background

cmd = 'bin/my_server --key1='+value1+' --key2='+value2+' &' # The '&' tells my bin to run in the background

server_background_process_pipe = subprocess.Popen(cmd, shell=True,stderr=subprocess.STDOUT)

print(server_background_process_pipe) # prints ''

time.sleep(1) # Wait for the server to be ready

def test_basic_get_request():

print(server_background_process_pipe) # prints 'None'

response = send_request_to_server()

fail_if_not_as_expected(response) # Response is exactly as expected

def teardown_module():

# kill the server that was launched in setup_module to serve requests in the tests

# AttributeError: 'NoneType' object has no attribute 'terminate'

server_background_process_pipe.terminate()

额外信息:

它是

没有

即使服务器进程仍在运行。它是

没有

当测试运行时。它在测试套件完成后运行很长时间。如果我重新运行测试,我会在控制台中收到一条消息,指出服务器已在运行,因此无法部署。测试仍然通过,因为它们将上一次执行的请求发送到服务器。

因为服务器需要在后台运行,所以我直接使用subprocess.popen构造函数,而不是像

check_output

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值