我想在测试开始之前创建服务器,然后在所有测试运行之后终止它。行为描述如下。
我第一次运行测试:1.返回错误(如下)2.测试失败3.调用服务器(现在服务器正在运行)
第二次运行测试:1.返回相同的错误(如下)2.测试通过3.服务器关闭
错误:发生异常:RuntimeError无法启动进程服务器
@pytest.fixture(autouse=True, scope="session")
def start_server(xprocess):
port = 8000
server_path = py.path.local(__file__).dirpath("service.py")
xprocess.ensure("server", lambda cwd: ("started", [sys.executable, server_path, port]))
yield
xprocess.getinfo("server").terminate()
解决方案:
def server(host, port):
# definition of your server
@pytest.fixture(autouse=True, scope="session")
def start_server():
p = multiprocessing.Process(target=server, args=(host, port))
p.start()
yield
p.terminate()