应用程序服务器的单元测试

时间:2009-01-21 09:15:43

标签: python unit-testing twisted

我写了一个应用服务器(使用python& twisted),我想开始写一些测试。但由于时间限制而我现在没有时间玩它,我不想使用Twisted的试用版。所以这就是我的想法:编写一个小型测试客户端,连接到app服务器并发出必要的请求(通信协议是一些内部XML),以静态方式存储接收到的XML,然后编写一些测试使用unitest的那些静态数据。

我的问题是:这是一种正确的方法,如果是,这种方法涵盖了哪种测试?

此外,使用此方法有几个缺点,例如:无法访问数据库层以构建/重建架构,测试客户端何时将连接到服务器:每个单元测试或运行之前测试套件?

4 个答案:

答案 0 :(得分:2)

你应该使用试用版。这真的不是很难。试用版的文档有待改进,但如果你知道如何使用标准库单元测试,那么唯一的区别就是不用写

import unittest

你应该写

from twisted.trial import unittest

...然后您可以从test_方法返回Deferreds。几乎其他一切都是一样的。

另一个不同之处在于,不是在模块底部构建一个巨大的测试对象,而是运行

python your/test_module.py

您可以简单地定义测试用例然后运行

trial your.test_module

如果你根本不关心reactor集成,事实上,你可以在一组现有的Python单元测试上运行trial。试用版支持标准库“unittest”模块。

答案 1 :(得分:1)

“我的问题是:这是正确的做法吗?”

这是你选择的。你找了很多借口,所以我假设你很好地修好了这门课程。这不是最好的,但您已经列出了所有这些原因(然后询问有关此特定行动方案的后续问题)。 “正确”不再进入,所以这个问题没有答案。

“这种方法涉及哪种测试?”

他们称之为“黑盒”测试。应用程序服务器是一个黑盒子,有一些输入和输出,你不能测试它的任何内部。它被认为是一种可接受的测试形式,因为它测试底线外部接口的可接受行为。

如果您遇到问题,那么做诊断工作就没用了。你会发现你还需要对内部结构进行白盒测试。

“无法访问数据库层以构建/重建架构,”

为什么不呢?这是Python。编写一个单独的工具,导入该层并进行数据库构建。

“测试客户端何时连接到服务器:每个单元测试或运行测试套件之前?”

取决于测试的意图。取决于您的使用案例。在您的实际目标客户的“现实世界”中会发生什么?

您需要测试类似客户端的行为,以客户端连接的方式建立连接。

此外,您还需要测试异常行为,例如客户端丢失连接或无序处理或未连接。

答案 2 :(得分:1)

我认为你选择了错误的方向。确实,试验文档很轻松。但是Trial是基于unittest的,只是添加一些东西来处理reactor循环和异步调用(编写处理deffers的测试并不容易)。所有不包括deffer /异步调用的测试都将与普通的unittest完全相同。

Trial命令是一个测试运行器(有点像鼻子),因此您不必为测试编写测试套件。你会节省时间。最重要的是,Trial命令可以输出分析和覆盖信息。只需做试验-h了解更多信息。

但无论如何,首先你应该问自己,你最需要哪种测试,单元测试,集成测试或系统测试(黑盒子)。可以通过试验完成所有工作但不一定非常合适。

答案 3 :(得分:0)

之前没有使用过扭曲,扭曲/试用文档并不像我刚看到的那样出色,但是你可能需要2-3天才能正确实现上面描述的测试系统。现在,就像我说我不知道​​试用,但是我想你可能会在1-2天内完成它,因为你已经有了Twisted应用程序。现在,如果试验在更短的时间内给你更多的报道,我会选择试用。

但请记住,这只是粗略看一下文档的答案