Python论坛  - 讨论区

标题:[python-chinese] 基于Python的自动化构建和测试服务器

2006年06月02日 星期五 22:22

Apex Liu apex.liu at gmail.com
Fri Jun 2 22:22:12 HKT 2006

我刚刚搞了一个自动化构建的服务器,在公司配置好了,下一步工作就是修改自动
化构建的配置工具,并加入自动化测试。

基于Python开发,主要是调用其它应用程序来完成获取源代码(CVS/SVN)、编译
(VC/CB/Delphi等)、复制、打包(用NSIS或者InstallShield)、并利用Python内建
的FTP模块上传到发布服务器,同时将构建过程的日志解析处理成为美观的HTML页
面,也放到发布服务器上。

构建服务器是利用Limodou提供的一篇啄木鸟上面的文章,做成系统服务。通过
Socket模块监听,一个Apache服务器负责做发布服务器,同时也提供选项的设置,
可以在网页上一次点击,构建服务就开始根据配置文件进行全面的构建(下代码,
编译,打包等等)。

此时测试机收到构建成功的通知,利用FTP模块从发布服务器上取得新的安装程序
,自动安装(安装完成后可能需要重新启动),然后运行测试套件,最后将测试结果
日志也解析处理成HTML页面,放到发布服务器上去,供开发人员和测试人员参考。

一个人从开始学习Python开始,到目前构建服务器可用,自动测试框架基本成形,
大概用了两个半月(全职)。


有机会,考虑将这个做成开源的,大家一起来完善它。


"lv tao" <lvtaofly at gmail.com> wrote:
> 我工作的一部分是用python开发自动化测试工具。
> 自动文档和 test plan生成器,有大虾从事类似工作的么。
>
> 渴望交流
>


-- 
---------------------------------
Apex Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060602/ec2849ad/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月02日 星期五 22:34

Zoom.Quiet zoom.quiet at gmail.com
Fri Jun 2 22:34:34 HKT 2006

On 6/2/06, Apex Liu <apex.liu at gmail.com> wrote:
> 我刚刚搞了一个自动化构建的服务器,在公司配置好了,下一步工作就是修改自动
> 化构建的配置工具,并加入自动化测试。
>
> 基于Python开发,主要是调用其它应用程序来完成获取源代码(CVS/SVN)、编译
> (VC/CB/Delphi等)、复制、打包(用NSIS或者InstallShield)、并利用Python内建
> 的FTP模块上传到发布服务器,同时将构建过程的日志解析处理成为美观的HTML页
> 面,也放到发布服务器上。
>
> 构建服务器是利用Limodou提供的一篇啄木鸟上面的文章,做成系统服务。通过
> Socket模块监听,一个Apache服务器负责做发布服务器,同时也提供选项的设置,
那未就是C/S 结构的了?

测试发起管理主机和测试环境影响的客户机?

在什么系统上跑的?

如果没有代码每次真正重新架构的处理,不能保证每次测试环境的"干净"的!

原先,我设想过在FreeBSD 中使用标准的jail + ports 机制配合,才可能提供这种真正的 构建服务的!

就是每次构建是从头重新创建一个jail 虚拟环境,所有依赖软件,通过Ports 标准安装,编译。


> 可以在网页上一次点击,构建服务就开始根据配置文件进行全面的构建(下代码,
> 编译,打包等等)。
>
> 此时测试机收到构建成功的通知,利用FTP模块从发布服务器上取得新的安装程序
> ,自动安装(安装完成后可能需要重新启动),然后运行测试套件,最后将测试结果
> 日志也解析处理成HTML页面,放到发布服务器上去,供开发人员和测试人员参考。
>
> 一个人从开始学习Python开始,到目前构建服务器可用,自动测试框架基本成形,
> 大概用了两个半月(全职)。
全职的Python 学习和应用机会?哪家公司这么前卫?


>
>
> 有机会,考虑将这个做成开源的,大家一起来完善它。
>
>
> "lv tao" <lvtaofly at gmail.com > wrote:
> > 我工作的一部分是用python开发自动化测试工具。
> > 自动文档和 test plan生成器,有大虾从事类似工作的么。
> >
> > 渴望交流
> >
>
>
> --
> ---------------------------------
> Apex Liu
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
"""Time is unimportant, only life important!
blogging  :  http://blog.zoomquiet.org/pyblosxom/
wiki enter:   http://wiki.woodpecker.org.cn/moin/ZoomQuiet
in douban:  http://www.douban.com/people/zoomq/
"""

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月02日 星期五 22:35

Zoom.Quiet zoom.quiet at gmail.com
Fri Jun 2 22:35:21 HKT 2006

On 6/2/06, Zoom. Quiet <zoom.quiet at gmail.com> wrote:
> On 6/2/06, Apex Liu <apex.liu at gmail.com> wrote:
> > 我刚刚搞了一个自动化构建的服务器,在公司配置好了,下一步工作就是修改自动
> > 化构建的配置工具,并加入自动化测试。
> >
> > 基于Python开发,主要是调用其它应用程序来完成获取源代码(CVS/SVN)、编译
> > (VC/CB/Delphi等)、复制、打包(用NSIS或者InstallShield)、并利用Python内建
> > 的FTP模块上传到发布服务器,同时将构建过程的日志解析处理成为美观的HTML页
> > 面,也放到发布服务器上。
> >
> > 构建服务器是利用Limodou提供的一篇啄木鸟上面的文章,做成系统服务。通过
> > Socket模块监听,一个Apache服务器负责做发布服务器,同时也提供选项的设置,
> 那未就是C/S 结构的了?
>
> 测试发起管理主机和测试环境影响的客户机?
>
> 在什么系统上跑的?
>
> 如果没有代码每次真正重新架构的处理,不能保证每次测试环境的"干净"的!
>
> 原先,我设想过在FreeBSD 中使用标准的jail + ports 机制配合,才可能提供这种真正的 构建服务的!
>
> 就是每次构建是从头重新创建一个jail 虚拟环境,所有依赖软件,通过Ports 标准安装,编译。
>
btw:
叫 wander -- 典狱长系统
>
> > 可以在网页上一次点击,构建服务就开始根据配置文件进行全面的构建(下代码,
> > 编译,打包等等)。
> >
> > 此时测试机收到构建成功的通知,利用FTP模块从发布服务器上取得新的安装程序
> > ,自动安装(安装完成后可能需要重新启动),然后运行测试套件,最后将测试结果
> > 日志也解析处理成HTML页面,放到发布服务器上去,供开发人员和测试人员参考。
> >
> > 一个人从开始学习Python开始,到目前构建服务器可用,自动测试框架基本成形,
> > 大概用了两个半月(全职)。
> 全职的Python 学习和应用机会?哪家公司这么前卫?
>
>
> >
> >
> > 有机会,考虑将这个做成开源的,大家一起来完善它。
> >
> >
> > "lv tao" <lvtaofly at gmail.com > wrote:
> > > 我工作的一部分是用python开发自动化测试工具。
> > > 自动文档和 test plan生成器,有大虾从事类似工作的么。
> > >
> > > 渴望交流
> > >
> >
> >
> > --
> > ---------------------------------
> > Apex Liu
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> --
> """Time is unimportant, only life important!
> blogging  :  http://blog.zoomquiet.org/pyblosxom/
> wiki enter:   http://wiki.woodpecker.org.cn/moin/ZoomQuiet
> in douban:  http://www.douban.com/people/zoomq/
> """
>


-- 
"""Time is unimportant, only life important!
blogging  :  http://blog.zoomquiet.org/pyblosxom/
wiki enter:   http://wiki.woodpecker.org.cn/moin/ZoomQuiet
in douban:  http://www.douban.com/people/zoomq/
"""

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月03日 星期六 08:10

mep kebowang at gmail.com
Sat Jun 3 08:10:23 HKT 2006

On 6/2/06, Apex Liu <apex.liu at gmail.com> wrote:
> 我刚刚搞了一个自动化构建的服务器,在公司配置好了,下一步工作就是修改自动
> 化构建的配置工具,并加入自动化测试。

请和Buildbot比较一下如何?
http://buildbot.sourceforge.net/

-- 
Best Regards,
mep

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月04日 星期日 15:54

hailang_0512 at 163.com hailang_0512 at 163.com
Sun Jun 4 15:54:51 HKT 2006

请教lambda问题:
>>> a=[lambda ar:ar*i for i in range(co)]
>>> for t in range(co):
... a[t](2)
...
14
14
14
14
14
14
14
14
>>>

结果为什么不是
0
2
4
6
8
10
12
14
呢?


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月04日 星期日 16:59

lubiao lubiao.py at gmail.com
Sun Jun 4 16:59:11 HKT 2006

看样子像 i 作为一个整形变量的引用名, 当作 for 循环 i 的值变化时影响到了 每一个 lambda.
最后 i 的值是 7 , 那么 所有的 lambda 中的 i 都是 7。


有点不合乎 直观的理解 , 等待高手解释,
如果解释不通, 是不是可以考虑, 提交到 python.org 。


On 6/4/06, hailang_0512 at 163.com <hailang_0512 at 163.com> wrote:
>
>
> 请教lambda问题:
> >>> a=[lambda ar:ar*i for i in range(co)]
> >>> for t in range(co):
> ... a[t](2)
> ...
> 14
> 14
> 14
> 14
> 14
> 14
> 14
> 14
> >>>
>
> 结果为什么不是
> 0
> 2
> 4
> 6
> 8
> 10
> 12
> 14
> 呢?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060604/7454331b/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月04日 星期日 20:55

makeyunbad makeyunbad at gmail.com
Sun Jun 4 20:55:38 HKT 2006

在 06-6-4,hailang_0512 at 163.com<hailang_0512 at 163.com> 写道:
>
> 请教lambda问题:
> >>> a=[lambda ar:ar*i for i in range(co)]

第一行都过不去啊
>>> a=[lambda ar:ar*i for i in range(co)]
Traceback (most recent call last):
  File "", line 1, in ?
NameError: name 'co' is not defined

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月04日 星期日 21:37

yi huang yi.codeplayer at gmail.com
Sun Jun 4 21:37:02 HKT 2006

应该是延迟计算的缘故,运行下面这句中" lambda ar:ar*i "的时候并没有对i求值,
  a=[lambda ar:ar*i for i in range(co)]
在后面a[t](2)的时候才求值,此时i为co-1了。

On 6/4/06, makeyunbad <makeyunbad at gmail.com> wrote:
>
> 在 06-6-4,hailang_0512 at 163.com<hailang_0512 at 163.com> 写道:
> >
> > 请教lambda问题:
> > >>> a=[lambda ar:ar*i for i in range(co)]
>
> 第一行都过不去啊
> >>> a=[lambda ar:ar*i for i in range(co)]
> Traceback (most recent call last):
>   File "", line 1, in ?
> NameError: name 'co' is not defined
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
考研还是工作  哎... !
http://codeplayer.blogbus.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060604/f5aa8d45/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月05日 星期一 11:57

lubiao lubiao.py at gmail.com
Mon Jun 5 11:57:40 HKT 2006

>  应该是延迟计算的缘故,运行下面这句中" lambda ar:ar*i "的时候并没有对i求值,

什么是 延迟计算 ? 别处可有例子?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060605/4165a3c8/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月05日 星期一 13:17

jacob jacob at exoweb.net
Mon Jun 5 13:17:57 HKT 2006

看看这个例子
>>> a = []
>>> for i in range(7):
... a.append(lambda ar:ar*i)
...
>>> i = 15
>>> a[0](2)
30

lubiao wrote:

> 看样子像 i 作为一个整形变量的引用名, 当作 for 循环 i 的值变化时影响到
> 了 每一个 lambda.
> 最后 i 的值是 7 , 那么 所有的 lambda 中的 i 都是 7。
>
>
> 有点不合乎 直观的理解 , 等待高手解释,
> 如果解释不通, 是不是可以考虑, 提交到 python.org <http://python.org> 。
>
>
> On 6/4/06, *hailang_0512 at 163.com hailang_0512 at 163.com>*
> <hailang_0512 at 163.com hailang_0512 at 163.com>> wrote:
>
>
>     请教lambda问题:
>     >>> a=[lambda ar:ar*i for i in range(co)]
>     >>> for t in range(co):
>     ... a[t](2)
>     ...
>     14
>     14
>     14
>     14
>     14
>     14
>     14
>     14
>     >>>
>
>     结果为什么不是
>     0
>     2
>     4
>     6
>     8
>     10
>     12
>     14
>     呢?
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060605/166ef40a/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月05日 星期一 13:43

lubiao lubiao.py at gmail.com
Mon Jun 5 13:43:04 HKT 2006

这样看来 比较清楚了

  lambda_form ::= "lambda"
[parameter_list]:
expression
就是说当 expression
里除了参数名,
其他的名字在调用时,在名字空间查找,到底引用的是什么对象
所以  a=[lambda ar:ar*i for i in range(co)] 这样的语句就没有多大意义了

谢谢 *jacob* ,*yi huang*

>>> a = lambda ar: ar*i
>>> a(100)
Traceback (most recent call last):
  File "", line 1, in ?
  File "", line 1, in 
NameError: global name 'i' is not defined
>>> i = 10
>>> a(100)
1000
>>> del i
>>> a(100)
Traceback (most recent call last):
  File "", line 1, in ?
  File "", line 1, in 
NameError: global name 'i' is not defined
>>>


On 6/5/06, jacob <jacob at exoweb.net> wrote:
>
>  看看这个例子
> >>> a = []
> >>> for i in range(7):
> ...     a.append(lambda ar:ar*i)
> ...
> >>> i = 15
> >>> a[0](2)
> 30
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060605/ceddc1b0/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月05日 星期一 21:50

hailang_0512 at 163.com hailang_0512 at 163.com
Mon Jun 5 21:50:40 HKT 2006

多谢大家:
lubiao,yi huang的热心帮助!!
最后总结如下:


这样看来 比较清楚了
lambda_form 	::= 	"lambda" [parameter_list
]:
expression



就是说当 expression

里除了参数名, 其他的名字在调用时,在名字空间查找,到底引用的是什么对象
所以 a=[lambda ar:ar*i for i in range(co)] 这样的语句就没有多大意义了
谢谢 *jacob* ,*yi huang*

>>> a = lambda ar: ar*i
>>> a(100)
Traceback (most recent call last):
File "", line 1, in ?
File "", line 1, in 
NameError: global name 'i' is not defined
>>> i = 10
>>> a(100)
1000
>>> del i
>>> a(100)
Traceback (most recent call last):
File "", line 1, in ?
File "", line 1, in 
NameError: global name 'i' is not defined
>>>

On 6/5/06, *jacob* <jacob at exoweb.net jacob at exoweb.net>> wrote:

    看看这个例子
    >>> a = []
    >>> for i in range(7):
    ... a.append(lambda ar:ar*i)
    ...
    >>> i = 15
    >>> a[0](2)
    30



co=[2,4,6]

a=[lambda s:s*i for i in co]


for t in range(len(co)):
print a[t](5)
print t,'i'

#晚绑定(实现)的问题,知道lambda运行的时候,才去找i这个变量。这是i已经是6了

for i in range(len(co)):
print a[i](5)
print i,'i'

#晚绑定(实现)的问题,知道lambda运行的时候,才去找i这个变量。这是i已经
是range(len(co))了,也就是1,2,3了



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月10日 星期六 23:43

Apex Liu apex.liu at gmail.com
Sat Jun 10 23:43:18 HKT 2006

我还真是孤陋寡闻,第一次听说Buildbot这个东东。

粗略的看了一下Buildbot,非常的不错,但是功能过于繁多,内部培训使用是个问题。
特别是那个"瀑布"式的输出日志,并不便于小项目使用。我这边作的自动构建系统,目标就是要易用,要求经过简单的配置就能够供各个开发部门使用。

Buildbot中有很多好点子值得学习。

> 全职的Python 学习和应用机会?哪家公司这么前卫?

现在想起来,一个人的力量还真是薄弱啊。本来跟公司建议至少招聘一个Python方面的专门人才共同开发后勤系统(自动构件/测试,项目流程管理,ISO9000流程的电子化等等),但是目前公司规模还没有达到那种急迫的程度,也就否决了,唉~~~

因为我目前一般不直接参与公司的产品代码编写,所以有点时间来搞这个自动构件/测试系统。最开始是用.bat批处理的方式,发现功能实在是太弱了,又无法跨平台,后来就用PHP(基于PHP的命令行模式,不是Apache的module模式)重写了一次,增强了不少,但是由于PHP并不真正面向对象,而且脚本执行时间的可控性不够,在Mac
OS平台上好像也有些问题,所以又用Perl写了一遍。

Perl方式的也有一些问题,主要问题是其脚本语法过于怪异,其他同事短时间内无法上手,没有办法,最后决定用Python,Ruby这种日本人的玩意儿,就算了。



2006/6/3, mep <kebowang at gmail.com>:
>
> On 6/2/06, Apex Liu <apex.liu at gmail.com> wrote:
> > 我刚刚搞了一个自动化构建的服务器,在公司配置好了,下一步工作就是修改自动
> > 化构建的配置工具,并加入自动化测试。
>
> 请和Buildbot比较一下如何?
> http://buildbot.sourceforge.net/
>
> --
> Best Regards,
> mep
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
---------------------------------
Apex Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060610/cd5baa5b/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号