Python中文
首页
教程
问答
标签
搜索
登录
注册
你在appengine上使用了什么方法来进行轻量级Python单元测试?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我即将着手进行一些大型的基于Python的appengine项目,我想我应该先看看Stack Overflow的“群体智慧”,然后再决定采用单元测试策略。我有一个现有的单元测试框架(基于带有定制运行器和扩展的<a href="http://docs.python.org/library/unittest.html?highlight=unittest#module-unittest" rel="noreferrer">unittest</a>),所以任何“重磅”/“插入式”的东西,比如<a href="http://code.google.com/p/python-nose/" rel="noreferrer">nose</a>,<a href="http://pythonpaste.org/webtest/" rel="noreferrer">webtest</a>,或{a4}似乎都不合适。在我的世界观中,关键的单元测试是非常轻量级和快速的,运行时间非常短,所以我可以一直反复运行它们,而不会破坏我的开发节奏(例如,对于不同的项目,对于一个20K行的项目,我可以获得97%左右的覆盖率,其中有几十个超快速的测试,需要5-7次总的来说,对于一个典型的运行来说,总的来说,这是一个不错的小型快速单元测试套件)。当然,我也会有更丰富/更重的测试,一直到与selenium或Windmiller的集成测试,这正是我要问的问题;—)——我在这个问题上的重点(以及在我的大部分开发工作中;—)是在小的、轻量级的单元测试上,这些单元测试轻巧而快速地覆盖了我的代码,而不是深层次的测试。在</p> <p>所以我认为我需要的基本上是一组小型的,非常轻量级的各种关键应用引擎子系统的模拟——数据存储、内存缓存、请求/响应对象和对webapp处理程序的调用、用户处理、邮件和c,大致按优先顺序排列。我还没有找到我要找的东西,所以在我看来,我要么依赖<a href="http://code.google.com/p/pymox/" rel="noreferrer">mox</a>,就像我过去经常做的那样,这基本上意味着模拟给定测试中使用的每个子系统,并设置所有期望值&c(很强,但每次都要做大量工作,并且对测试代码的内部结构非常敏感,即非常“白盒”y),或者对每个子系统进行我自己的模拟(并作为单元测试的一部分对模拟子系统的状态进行断言)。考虑到GAE的Python端强大的“存根”架构,latter似乎是可行的。。。但我不敢相信我需要自己动手,也就是说,没有人已经编写出这么简单的模拟器!-)例如,对于数据存储,我需要的或多或少是“文件上的数据存储”存根,它已经是SDK的一部分,再加上一种将其标记为只读的、易于使用的访问器来断言数据存储的状态;等等,一个子系统接一个子系统——每个子系统似乎都需要比SDK中已有的“稍微多”一点,“位于”现有“存根”架构之上。在</p> <p>所以,在投入一两天宝贵的开发时间“自己”模拟GAE子系统以进行单元测试之前,我想我应该和其他人再核实一下,看看你们对这一点的看法。。。或者,如果已经有一些这样的模拟器的开源集合,我可以简单地重用(或者最小限度地调整!-),我只是在搜索中没能发现!-)在</p> <p><strong>编辑</strong>:为了澄清,如果我真的自己动手,我确实计划在可行的情况下利用SDK提供的存根;但例如,对于最初从文件中读入但最后没有保存的数据存储来说,没有存根,因此我需要对现有的存根进行子类化和调整(这也没有提供特别方便的方法)声明其状态——与邮件服务存根相同,等等)。这就是我所说的“自己动手”的意思——而不是“从头开始重写”!-)在</p> <p><strong>编辑</strong>:“why not GAEUnit”--GAEUnit对于它自己的用例来说是很好的,但是运行dev_appserver并在我的浏览器中查看结果(甚至通过urllib.urlopen)绝对不是我想要的——我想用全自动的装置,适合在现有的基于扩展unittest的测试运行框架内运行,并且没有HTTP方式(所述框架定义了一个“快速”测试,即除其他外没有套接字和最小磁盘I/O——我们模拟或模拟这些——因此通过gaeuniti做得比“中等”测试好不了多少)+没有为每个测试预填充数据存储的方便方法(也没有帮助定制东西的OO结构)。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您不需要编写自己的存根—SDK包括它们,因为它们是用来模拟生产API的工具。并不是所有这些都适合在单元测试中使用,但大多数都适合。查看<a href="http://gist.github.com/186251" rel="nofollow noreferrer">this code</a>以获取使用内置存根所需的设置/拆卸代码示例。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django restfram生成PDF
2 回答
无法使用Django Rest框架发送压缩的gzip数据
9 回答
无法使用Django rest框架进行身份验证(请求用户=匿名用户)
10 回答
无法使用Django、Python和JavaScrip触发onclick函数
8 回答
无法使用Django.views.generic.View保存表单
2 回答
无法使用Django(python 2.7,OS X 10.11.1)
9 回答
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
3 回答
无法使用Django\u mssql\u后端迁移到外部hos
4 回答
无法使用Django&Python3.4连接到MySql
5 回答
无法使用Django+nginx上载媒体文件
7 回答
无法使用Django1.6导入名称模式
2 回答
无法使用Django1.7和mongodb登录管理站点
10 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
6 回答
无法使用Djangockedi验证CBV中的字段
7 回答
无法使用Djangocketditor上载图像(错误400)
6 回答
无法使用Djangocron进行函数调用
8 回答
无法使用Djangofiler djang上载文件
10 回答
无法使用Djangokronos
8 回答
无法使用Djangomssql provid
3 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
5 回答