您在App Engine上使用了哪种方法进行轻量级Python单元测试?

Alex Martelli:

我将着手进行一些基于Python的大型App Engine项目,我认为在致力于单元测试策略之前,应该先检查Stack Overflow的“人群智慧”。我有一个现有的单元测试框架(基于单元测试定制亚军和扩展),我想使用,所以任何“重量级” /“侵入”,如鼻子WebTest的,或gaeunit似乎不合适。我的世界观中至关重要的单元测试是轻量级且快速的测试,它们在极短的时间内运行,因此我可以一直不断地运行它们,而不会破坏我的开发节奏(例如,对于其他项目,我得到了总的来说,一个20K线项目的几十%的覆盖率是数十次,整个测试过程耗时5-7秒,耗时5-7秒,这是我认为相当不错的一套小型,快速单元,测试)。当然,我还将进行更丰富/更重的测试,一路进行与硒或风车的集成测试,这不是 我要问的是;-)-我在这个问题上(以及在我的大多数开发工作中;-)的重点是小型轻量级单元测试,该测试轻而易举地覆盖了我的代码,而不是更深层次的那些。

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

因此,在投入并花一两天宝贵的开发时间“滚动我自己的” GAE子系统仿真以进行单元测试之前,我想我会与SO人群仔细检查一下,然后看看大家对此有何看法。 ..或者,如果已经有一些这样的模拟器的开放源代码集,我可以简单地重用它们(或进行最小程度的调整!-),而我在搜索中就没能找到它!-)

编辑:澄清一下,如果我自己动手,我计划在可行的情况下利用SDK提供的存根。但是例如,对于最初从文件中读取但最后没有保存的数据存储区,则没有存根,因此我需要对现有的存根进行子类化和调整(这也不提供在其上进行断言的特别方便的方法状态-与邮件服务存根相同,等等)。这就是我“滚动自己”的意思,而不是“从头开始重写”!-)

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

尼克·约翰逊(Nick Johnson):

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您在 App Store 上的应用隐私详情问题

用Java进行单元测试App Engine图像上传

使用Testbed对Google App Engine进行单元测试时,InvalidModuleError()

使用Gorilla MUX的单元测试App Engine

对EmberJS App进行单元测试(实际单元测试)

如何对Google App Engine Go HTTP处理程序进行单元测试?

在App Engine Java JDO中对XG跨组事务进行单元测试

您在单元测试中的哪里设置OrmLiteConfig.DialectProvider.NamingStrategy?

Google App Engine + Python WebApp2的本地单元测试

如何为使用Go中的App Engine服务的代码运行单元测试?

您在哪里可以找到Mac App Store分析

您在哪里迅速采用全局方法?

App Engine单元测试:ImportError:起始目录不可导入

如何在pycharm中运行App Engine单元测试?

App Engine本地单元测试不同的实例[GO]

使用 firebase-server 进行单元测试时,this.app.database 不是函数

如何使用JEST在React App中对功能进行单元测试

修改MVC网站以显示您在测试网站上的最佳方法

使用您在python中的发现更新mysql数据库

如何编辑您在终端Mac OS上编写的命令

如何从终端告诉您您在基本屏幕上?

Maven错误:也许您在JRE而不是JDK上运行?

如何知道您在k8s主节点上?

您在<ScrollView>上指定了“ onScroll”,但未指定“ scrollEventThrottle”

是否可以重新下载您在iTunes上付费的歌曲?

Git钩子创建-您在分支上尚未出生

当您在python中设置字典时会发生什么?

您在参数声明中为varchar(MAX)使用什么大小?

您在C ++中使用NULL还是0(零)作为指针?