Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在谷歌应用程序引擎上进行自动测试?_Python_Google App Engine - Fatal编程技术网

Python 如何在谷歌应用程序引擎上进行自动测试?

Python 如何在谷歌应用程序引擎上进行自动测试?,python,google-app-engine,Python,Google App Engine,我正在Google app engine上创建一个应用程序,我想知道是否有办法用python进行自动测试 谢谢 我使用gaeunit——它可能适合也可能不适合您的需要,但一旦它开始使用,就很容易添加到。我还添加了一个xml输出,这样我就可以将结果塞回junit分析器,这样我的jenkins就可以在代码签入后报告没有任何问题。David Robinson提到了开发单元测试。 如果您希望使用python进行自动化用户(生产)测试,请选择selenium rc或selenium webdriver(改

我正在Google app engine上创建一个应用程序,我想知道是否有办法用python进行自动测试


谢谢

我使用gaeunit——它可能适合也可能不适合您的需要,但一旦它开始使用,就很容易添加到。我还添加了一个xml输出,这样我就可以将结果塞回junit分析器,这样我的jenkins就可以在代码签入后报告没有任何问题。

David Robinson提到了开发单元测试。 如果您希望使用python进行自动化用户(生产)测试,请选择selenium rc或selenium webdriver(改进版和独立版)

你可以用selenium RC创造奇迹


请参阅

我们通常不会进行太多测试。我们曾经有一个“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
上完成,后端实验在
apptest.appspot.com
上完成

我们有三个分支:master、rc和production.rc由master更新,production由rc更新。rc由运营部门或他们每天部署到rc.app.appspot.com。每周将生产部署到production.app.appspot.com(也可以通过其他应用名称访问)

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

现在来看测试:我们主要使用验收测试。我们有一个称为
restest\u dsl
的小框架,用于描述如下测试:

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('...')
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
主机名和凭据有默认值,但可以被环境变量覆盖。我们修复的大多数错误都有回归测试。我们使用
Makefile
s来驱动整个过程。例如:

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存储库进行,如下所示:

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('...')
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上标记有当前版本的版本。然后对这个新部署的版本运行
restest.py
。出现故障时,m
make
停止执行。如果没有出现故障,则部署“生产版本”

我们还运行mandantory,并检查源代码签入


总而言之,我们有非常简单的测试,但要针对生产代码和数据运行很多测试。对我们来说,这捕获了我们所犯的大部分错误,而我们所做的努力相对较少。

答案的多样性证明,这个问题应该更具体地说明测试类型。