【发布时间】:2021-04-07 01:54:47
【问题描述】:
tl,dr:如何以编程方式将 python 模块(非函数)作为与不同 python 模块的单独进程执行?
在我的开发笔记本电脑上,我有一个包含瓶服务器的“服务器”模块。在这个模块中,name==main 子句启动了 Bottle 服务器。
@bt_app.post("/")
def server_post():
<< Generate response to 'http://server.com/' >>
if __name__ == '__main__':
serve(bt_app, port=localhost:8080)
我还有一个包含 pytests 的“test_server”模块。在这个模块中,name==main 子句运行 pytest 并显示结果。
def test_something():
_rtn = some_server_function()
assert _rtn == desired
if __name__ == '__main__':
_rtn = pytest.main([__file__])
print("Pytest returned: ", _rtn)
目前,我手动运行服务器模块(在 localhost 上启动 Web 服务器),然后手动启动 pytest 模块,该模块向正在运行的服务器模块发出 html 请求并检查响应。
有时我忘记启动服务器模块。没什么大不了的,但很烦人。所以我想知道我是否可以以编程方式将服务器模块作为与 pytest 模块分开的进程启动(就像我现在手动做的那样),所以我不会忘记手动启动它。
谢谢
【问题讨论】:
-
使用
subprocess。 -
将
serve行放入函数中。在这样做的同时,您还可以修复端口语法。 -
克劳斯。你不能认为我的最小示例是一个实际的程序。
标签: python pytest python-multiprocessing bottle