Phi*_*ham 2 python unit-testing thrift blocking
我正在使用Thrift编写服务,需要应用一些测试来确保它按预期运行/响应.为实现这一目标,最强大的方法似乎是使用该unittest模块.
我想在"测试"模式下启动服务(从特定的"测试"端口启动,使用"测试"数据等)直接在单元测试的setUp方法中,但是serve()在那一点调用块等待连接.
什么是启动服务的最佳方法,以便可以执行测试并使用该tearDown方法可以干净地降低服务?
提供的"完全隔离" unittest非常适合单元测试(它的设计目的)但不一定用于集成测试 - 我看到重用unittest这些的吸引力,我自己动手利用我们拥有的特殊测试跑步者和c但是,我意识到这是一种适合unittest用于集成测试的力量,我尝试通过编码进行补偿,而不是代码单元测试.
当我必须在集成测试中生成服务器时,我倾向于在模块开始时,在一个单独的过程中进行产生 - 通过subprocess或通过适合您的安装的其他方式,如果您想在单独的情况下运行它节点或其他 - 并使用atexit注册终止代码,当我的测试模块全部完成时,该终止代码将发送该服务器的终止请求.这并不像单元测试所要求的那样"干净地分开" ,但我发现它对于集成测试来说已经足够好了,并且在多个测试中分摊了启动和初始化服务器的开销,这可能非常高.
即使你热衷于使用setUp和tearDown,我仍然建议使用一个单独的过程(如果你有很多那些在"连续构建农场"中等等的单独节点).正如@Ned的回答所暗示的那样,在同一个过程中使用不同的线程会让我感到风险 - 可能很容易在服务器和测试之间产生不必要的交互,隐藏一些错误或导致其他错误.
如果我理解正确你试图运行服务器不仅仅是在同一个进程上运行,甚至在与测试相同的线程中,这对我来说似乎绝对是一个坏主意 - 当然它会阻止一切,除非服务器是非常特别的编码! - )
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |