首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python对web服务进行沙箱化

用Python对web服务进行沙箱化
EN

Stack Overflow用户
提问于 2010-08-19 14:07:53
回答 4查看 312关注 0票数 4

我正在为具有多个相互依赖的服务的web应用程序构建一个集成测试。它们都依赖于共享资源才能正确运行。我想确保系统中的数据在运行时是正常的,所以我正在利用一个实时服务。我正在使用Python构建它,这是我关于如何对服务进行沙箱化的想法:

  • 使用多进程的BaseManager构建测试运行程序
  • 把每个服务都关起来,作为后台服务运行它们。
  • 让侦听器对来自服务的传入连接作出响应,并吐出数据。

这看上去理智吗?其他想法包括将每个服务作为一个进程运行,或者让每个服务都有自己的来运行。

EN

回答 4

Stack Overflow用户

发布于 2010-10-24 04:40:04

您肯定不想先用实时数据进行测试。为了构建集成测试,您应该首先模拟您的依赖项并使用您控制的I/O集。有了预期的投入和产出是非常重要的。在进行集成测试时,构建这些单元测试将极大地帮助您。

至于您的具体问题,您可以使用代理来拦截数据或修饰您的调用函数来添加日志记录。有关拦截器的更多信息,请查看面向方面编程(AOP)。

如果您正在使用WSGI,您可以编写一个中间件来处理拦截和日志记录。查看一下CherryPy的wsgiserver.py模块,了解它的帮助;Django也使用中间件,它们的文档可能能够帮助处理中间件。

票数 1
EN

Stack Overflow用户

发布于 2010-08-28 17:11:25

第三种可能性是最简单的--通过让您自己的守护进程成为中间进程,并让它成为唯一可以直接访问资源的进程,从而避免任何锁定问题,而所有其他进程都需要通过它来获得访问。

票数 0
EN

Stack Overflow用户

发布于 2010-10-28 15:38:34

也许你应该退后一步,先问几个问题。

  • 测试过的最重要部分是什么?
  • 设置测试有多难?
  • 设置测试的成本是否值得获得测试结果?
  • 我能用一个简单的测试来测试我想要的大部分内容吗?

不管怎么说,我都会使用一个基于实时数据和对数据的期望的固定设备。这使得我们的测试是确定性的,因此是自动化的。

如果最重要的部分是逻辑的一部分,则可以通过具有已知输入/输出和模拟的单元测试来测试。

如果测试集成部分真的是最重要的,那么我会尝试在模拟尽可能多的移动部件之间找到一个平衡,以便进行更易于管理的测试。

您使用的网络资源越多,系统就越复杂,应该进行的测试也就越多。您必须考虑定时问题、服务正常运行时间、超时、错误状态等。您还可能陷入创建不确定测试的陷阱。如果你的断言最终是在寻找时间上的差异,那么就依赖于特定的时间,或者依赖一个不可靠的服务,它经常会破坏你的工作;而你最终可能会得到一个由于假阳性中断而产生的大量“噪音”而毫无价值的测试。

如果您想使用连续集成模型,您还需要考虑在每次测试运行时必须管理(启动和关闭)或多个进程的复杂性。通常,如果可以让测试是运行的单个进程,而其他的“进程”是对代码中适当起点的函数调用,则可以更容易地管理测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3522584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档