3

我有一个在 Twisted 中运行的相对简单的 SSL 服务器,我想为它编写一些单元测试。我不确定使用 Python 3 时最好的方法。我发现的所有文档都描述了使用 Twisted Trial,不幸的是,这对于 Py3k 来说是不完整的。

我在想的是做这样的事情:

  • 加载我的代码并做所有事情,但reactor.run()
  • 发送我希望我的代码处理的数据
  • 运行reactor.doIteration()(或者可能reactor.iterate()更好?)
  • 检查我的服务器是否做了它应该做的事情

这是处理这种情况的合法方式吗?

编辑:

从字形回答这可能是一个坏主意(但它并不是专门谈论测试)

编辑2:

我想主要问题是当您尝试测试与 Twisted 交织在一起的组件时,您不确定如何将其拆开以正确测试各个组件。有没有可靠的方法来测试这个?应该.run()调用然后插入一个在您完成停止反应器并测试结果的操作后几秒钟运行的事件?

4

1 回答 1

1

您正在编写低级网络代码吗?您的应用程序是否与 BSD 套接字 API 交互?如果没有,你为什么要在测试中运行反应器?单元测试应该执行定义明确的、狭窄的代码集。这应该是您的应用程序代码 - 而不是 Twisted 中 TLS 传输的实现。

reactor.iterate要专门解决在您的单元测试或其他地方调用的想法:是的,这是一个坏主意。这不是 Twisted 本身的测试方式。没有理由期望这一点,因为您编写的代码在调用时有效,而在您调用reactor.iterate时会有效reactor.runreactor.iterate是关于事件循环应该如何与其他系统集成的错误想法的遗留物。可能有一两种极端的情况,其中的想法reactor.iterate是正确和有用的,但实际上没有人在这种情况下使用 Twisted,并且在 Twisted 上工作的人在进行更改时也没有考虑到它们。因此,这不是您希望您的应用程序出现的地方。当事情出错时,你会非常孤独。

于 2014-07-07T21:03:24.327 回答