首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您在approach上使用了什么方法(Es)来进行轻量级Python单元测试?

您在approach上使用了什么方法(Es)来进行轻量级Python单元测试?
EN

Stack Overflow用户
提问于 2009-11-18 05:44:45
回答 6查看 3.2K关注 0票数 42

我即将开始一些基于Python的大型应用程序引擎项目,我认为在承诺采用单元测试策略之前,我应该先了解Stack unit的“人群智慧”。我有一个现有的单元测试框架(基于带有自定义运行程序和扩展的单位测试 ),因此任何“重量级”/“侵入性”(如鼻子网测步长单位 )似乎都不合适。在我的世界观中,关键的单元测试是非常轻量级和快速的,那些在极短的时间内运行的测试,所以我可以在不破坏我的开发节奏的情况下不断地运行它们(例如,对于一个不同的项目,我得到了97%的覆盖率,对于一个20K线的项目,有几十个超级快的测试,需要5-7秒,经过的时间,对于一个典型的运行,总体来说--这就是我认为一套不错的小的、快速的单元测试)。当然,我还会有更丰富/更重的测试,包括与selenium或风车的集成测试,这是而不是我要问的内容;-) --我在这个问题上的重点(以及我的大部分开发工作;-)是在小型的、轻量级的单元上--这些测试可以轻松和超高速地覆盖我的代码,而不是更深的代码。

所以我想我需要的基本上是一组小型的,非常轻量级的模拟各种关键的App Engine子系统--数据存储、memcache、请求/响应对象和对webapp处理程序的调用、用户处理、邮件&c,大致按照优先级顺序排列。我还没有找到我想要的东西,所以在我看来,我应该像过去经常做的那样,依赖mox,这基本上意味着模拟在给定测试中使用的每个子系统,并设置所有期望&c (很强,但每次都有很多工作,并且对测试代码的内部结构非常敏感,即非常“白盒”y),或者对每个子系统进行自己的仿真(并将模拟子系统的状态作为单元测试的一部分)。考虑到GAE的Python端强大的“存根”架构,后者似乎是可行的.但我不敢相信我需要自己的代码,也就是说,没有人已经编写了如此简单的模拟器!-)例如,对于数据存储,我需要的似乎或多或少是已经成为SDK一部分的“文件上的数据存储”存根,以及一种将其标记为只读和易于使用的访问器来断言数据存储的状态的方法;以此类推,一个子系统又一个子系统--每个子系统似乎都需要比SDK中已经存在的“只需要一点点”,“栖息在”现有的“存根”体系结构的“顶部”。

所以,在投入和花一到两天宝贵的开发时间“滚动我自己的”模拟GAE子系统进行单元测试之前,我想我应该再次检查一下So人群,看看你们对此的看法.或者,如果已经有一些现有的开源模拟器,我可以简单地重用这些模拟器(或者稍微修改一下!-),而我只是在搜索中找不到!-)

编辑:为了澄清的是,如果我确实滚动了自己的存根,我确实计划在可行的情况下利用SDK提供的存根;但是,例如,对于最初从文件中读取但最后没有保存的数据存储没有存根,所以我需要对现有的存根进行子类和修改(这也不提供对其状态进行断言的特别方便的方法--邮件服务存根等等)。这就是我所说的“滚动我自己的”--而不是“从头开始重写”!)

编辑:“为什么不是GAEUnit”-- GAEUnit对它自己的用例很好,但是运行dev_appserver并在浏览器中看到结果(甚至通过urllib.urlopen)肯定不是我想要的--我想使用一个完全自动化的设置,适合在基于扩展单元测试的现有测试运行框架内运行,而且没有HTTP (上述框架将“快速”测试定义为一个没有套接字和最小磁盘I/O的测试--我们模拟或模拟这些测试--因此通过gaeunit我不能做比“中等”测试更好的测试)+没有方便的方式为每个测试预先填充数据存储(也没有OO结构来帮助定制事物)。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-18 11:12:23

您不需要编写自己的存根-- SDK包含这些存根,因为它们是用来模拟生产API的。并不是所有的测试都适合在单元测试中使用,但大多数是。有关使用内置存根所需的安装/拆卸代码的示例,请查看这段代码

票数 14
EN

Stack Overflow用户

发布于 2009-12-16 12:35:26

NoseGAE是一个鼻子插件,它通过自动设置开发环境和测试数据存储来支持单元测试。在dev_appserver上开发时非常有用。

票数 5
EN

Stack Overflow用户

发布于 2009-11-18 08:24:14

我使用GAEUnit作为我的应用程序,我对测试的速度很满意。我喜欢GAEUnit的地方,而且我确信Webtest是这样做的,那就是它为所有用于测试的存根创建了自己的版本,让您的“实时”版本单独进行测试。

因此,您可能用于开发的数据存储将与运行GAETests时一样保留。

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

https://stackoverflow.com/questions/1753897

复制
相关文章

相似问题

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