【发布时间】:2019-12-11 21:31:28
【问题描述】:
我想添加一些关于我的 cli 应用程序如何处理不同信号的测试(SIGTERM 等)。我在 pytest 旁边使用原生测试解决方案 click.testing.CliRunner。
测试看起来非常标准和简单
def test_breaking_process(server, runner):
address = server.router({'^/$': Page("").exists().slow()})
runner = CliRunner(mix_stderr=True)
args = [address, '--no-colors', '--no-progress']
result = runner.invoke(main, args)
assert result.exit_code == 0
我在这里卡住了,我怎么能发送SIGTERM 来处理runner.invoke?如果我使用 e2e 测试(调用可执行文件而不是 CLIrunner),我认为这样做没有问题,但我想尝试实现这一点(至少能够发送 os.kill)
有什么办法吗?
【问题讨论】:
-
信号是异步的。因此,您需要以某种方式从不同的线程触发它。 stackoverflow.com/questions/49474435/….
-
是的,同样的想法。
标签: python pytest python-click