【问题标题】:Python - Twisted and Unit TestsPython - 扭曲和单元测试
【发布时间】:2010-12-07 06:03:54
【问题描述】:

我正在为作为 HTTP 服务器运行的应用程序的一部分编写单元测试。我一直尝试采用的方法是导入包含 HTTP 服务器的模块,启动它。然后,单元测试将使用 urllib2 进行连接、发送数据和检查响应。

我们的 HTTP 服务器正在使用 Twisted。这里的一个问题是我对 Twisted 不太熟悉 :)

现在,我实例化我们的 HTTP 服务器并在 setUp() 方法中启动它,然后在 tearDown() 方法中停止它。

问题是,Twisted 似乎不喜欢这样,它只会运行一个单元测试。在第一个之后,反应堆将不再启动。

我搜索了又搜索了又搜索了,但我似乎无法找到一个有意义的答案。

我是完全采取了错误的方法,还是只是遗漏了一些明显的东西?

【问题讨论】:

    标签: python unit-testing twisted


    【解决方案1】:

    这里有一些信息:Writing tests for Twisted code using Trial

    您还应该查看试用命令的 -help。有很多好东西在试用!但是在异步应用程序中进行测试并不总是那么容易。祝你好运!

    【讨论】:

      【解决方案2】:

      我相信,对于 Twisted 中的单元测试,您应该使用 TwistedTrial(它是一个核心组件,即与 Twisted tarball 一起位于 twisted/trial 目录中)。但是,正如我指出的 URL 所说,该文档主要是通过查看源代码(包括各种 Twisted 项目的源代码,因为它们也经过了试用测试)。

      【讨论】:

        【解决方案3】:

        正如其他人提到的,您应该在 Twisted 中使用 Trial 进行单元测试。

        您还应该自下而上进行单元测试——这就是单元测试中“单元”的含义。在测试界面之前测试您的数据和逻辑。对于 HTTP 接口,您应该使用模拟请求调用 processGET、processPOST 等,但只有在测试了这些方法调用的内容之后才应该这样做。每个测试都应假定在其他地方测试的单元按设计工作。

        如果您使用的是 HTTP,或者您需要一个正在运行的服务器或其他状态,那么您可能正在进行更高级别的测试,例如功能测试或集成测试。这不是一件坏事,但您可能需要重新表述您的问题。

        【讨论】:

        • 你知道我认为你是对的。老实说,做低级单元测试我需要做的就是伪造“请求”对象(一些函数使用了很多)。
        【解决方案4】:

        有一个带有 Twisted 的 known bug(可能无法修复),其中重新启动反应堆会导致崩溃。

        这就是您的单元测试不起作用的原因。

        除了使用Trial 之外,您可能还需要考虑单独的测试系统,它们可以像客户端一样与您的 HTTP 服务器通信。

        • Webdriver - 用于在您的站点周围驱动浏览器会话的 API。
        • TestGen4Web - Firefox 插件,记录与站点的交互并可以回放。

        【讨论】:

          猜你喜欢
          • 2011-08-14
          • 2011-05-07
          • 2021-03-26
          • 2013-09-25
          • 1970-01-01
          • 2021-12-01
          • 2017-07-14
          • 1970-01-01
          • 2014-08-04
          相关资源
          最近更新 更多