gpt4 book ai didi

c++ - 测试使用 tty stdin 和 stdout 的程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:12 26 4
gpt4 key购买 nike

我有一个由两半组成的软件:一个是在第一台电脑上运行的 python,另一个是在第二台电脑上运行的 cpp。它们通过串行端口 (tty) 进行通信。

我想在我的电脑上测试 python 端,为它提供正确的数据,看看它是否按预期运行。

我开始使用子进程,但后来出现了问题:我应该提供哪个标准输入和标准输出?

cStringIO 不工作,因为没有 fileno()

PIPE 也不起作用,因为 select.select() 说有一些东西要读,即使它实际上没有发送任何东西

你有什么提示吗?有没有我可以使用的假 tty 模块?

最佳答案

理想情况下,您应该模拟它并只测试行为,而不要过分依赖终端 IO。您可以使用 mock.patch为了那个原因。假设您要测试 t_read:

@mock.patch.object(stdin, 'fileno')
@mock.patch.object(stdin, 'read')
def test_your_behavior(self, mock_read, mock_fileno):
# this should make select.select return what you expect it to return
mock_fileno.return_value = 'your expected value'

# rest of the test goes here...

如果您至少可以发布您要测试的部分代码,我也许可以给您一个更好的示例。

关于c++ - 测试使用 tty stdin 和 stdout 的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19959644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com