我写了一个应用服务器(使用python& twisted),我想开始写一些测试。但由于时间限制而我现在没有时间玩它,我不想使用Twisted的试用版。所以这就是我的想法:编写一个小型测试客户端,连接到app服务器并发出必要的请求(通信协议是一些内部XML),以静态方式存储接收到的XML,然后编写一些测试使用unitest的那些静态数据。
我的问题是:这是一种正确的方法,如果是,这种方法涵盖了哪种测试?
此外,使用此方法有几个缺点,例如:无法访问数据库层以构建/重建架构,测试客户端何时将连接到服务器:每个单元测试或运行之前测试套件?
答案 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)
但请记住,这只是粗略看一下文档的答案