首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Google App Engine上进行自动化测试?

如何在Google App Engine上进行自动化测试?
EN

Stack Overflow用户
提问于 2012-01-10 14:49:55
回答 3查看 745关注 0票数 4

我正在谷歌应用程序引擎上创建一个应用程序,我想知道是否有方法可以用python进行自动化测试。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 03:22:31

我们通常不会做太多的测试。我们曾经有一个"80%测试覆盖率“的规则,但发现这并不能让我们变得更好或更快。我们使用的大多数代码和数据结构都是防御性的,所以很少会有无法挽回的危害。我们的用户更喜欢快速的周转时间而不是100%的正常运行时间。

我们有两个应用程序设置: my app.appspot.com和my app-test.appspot.com。整个代码库都是为了确保app-test.appspot.com永远不会改变外部系统的状态而设计的。

偶尔,我们会将数据从app.appspot.com复制到app-test.appspot.com。它可能会变得混乱,因为数据存储的id生成计数器不会更新,但它工作得足够好。

我们在这两个系统上进行开发。前端开发主要在app.appspot.com上完成,后端的实验在app-test.appspot.com上完成。

我们有三个分支: master,rc和production.rc从master获得更新,从rc获得生产。rc每天由或操作它们部署到rc.app.appspot.com。每周将生产部署到production.app.appspot.com (也可以通过其他应用程序名称访问。

开发人员通常使用dev-whoami.app.appspot.com进行实验。我们很少使用开发服务器,因为我们需要来自数据存储的大量数据。

现在来测试:我们主要使用验收测试。我们有一个名为resttest_dsl的小框架,我们用它来描述这样的测试:

代码语言:javascript
复制
client.GET('/').responds_access_denied()
client.GET('/', auth='user').responds_html()
client.GET('/admin').responds_access_denied()
client.GET('/admin', auth='user').responds_access_denied()
client.GET('/admin', auth='admin').responds_html()
client.GET('/artikel/').responds_with_html_to_valid_auth()
client.GET('/artikel/?q=Ratzfratz', auth='user').responds_html()
client.GET('/api/ic/v3/a/14600/03/zukunft.json').responds_with_json_to_valid_auth()
client.GET('/kunden/SC50313/o/SO1194829/', auth='user').responds_html()
client.GET('/api/masterdata/artikel/v2/artnr/14600/bild=s210').redirects_to('...')

主机名和凭据具有默认值,但可由环境变量覆盖。我们修复过的大多数错误都有一个回归测试。我们使用Makefiles来驱动所有的东西。例句:

代码语言:javascript
复制
deploy:
appcfg.py update -V dev-`whoami` -A app .
TESTHOST=dev-`whoami`.app.appspot.com make resttest
open http://dev-`whoami`.app.appspot.com/

部署总是从中央git存储库进行,如下所示:

代码语言:javascript
复制
deploy_production:
rm -Rf tmp
mkdir tmp
(cd tmp ; git clone git@github.com:user/app.git)
(cd tmp/app ; git checkout production ; make dependencies)
(cd tmp/app ; git show-ref --hash=7 refs/remotes/origin/production > version.txt)
appcfg.py update -V "v`cat tmp/app/version.txt`" -A app tmp/app
(cd tmp/huWaWi ; TESTHOST="v`cat version.txt`".app.appspot.com make resttest)
appcfg.py update -V production -A app tmp/app
appcfg.py backends -V production -A app tmp/huWaWi app

我们首先在AppEngine上部署到一个带有当前修订版的版本。然后,我们对这个新部署的版本运行resttest.py。如果失败,mmake将停止执行。如果没有发生故障,则部署“生产版本”。

我们还在源代码签入时运行mandantory pep8pyflakespylint检查。

总而言之,我们有非常简单的测试,但要针对产品代码和数据运行它们。对我们来说,这可以捕捉到我们犯下的大部分错误,而这些错误的工作量相对较小。

票数 2
EN

Stack Overflow用户

发布于 2012-01-10 17:26:12

我使用的是gaeunit - http://code.google.com/p/gaeunit/ --它可能适合你的需求,也可能不适合你,但是一旦它发布了,添加起来就很容易了。我还添加了一个xml输出,这样我就可以将结果放回junit分析器中,这样我的jenkins就可以在代码签入后报告没有损坏。

票数 0
EN

Stack Overflow用户

发布于 2012-01-10 17:26:51

David Robinson指的是开发单元测试。如果您正在寻找使用python进行自动化用户(生产)测试,请使用selenium rc或selenium webdriver(改进版本和独立版本)。

您可以使用selenium RC来创造奇迹。

请参阅http://seleniumhq.org/projects/webdriver/

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

https://stackoverflow.com/questions/8799605

复制
相关文章

相似问题

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