3

我们有一个包含Python和Scala包的库以及Bourne,Python和Perl可执行脚本的项目。尽管该库具有良好的测试覆盖率,但我们没有对脚本进行任何测试。在Jenkins中是否有测试脚本/可执行文件的标准方法?

当前测试环境使用Jenkins,Python,virtualenv,nose,Scala和sbt。

有没有一种标准/常用的方法来在Jenkins中加入脚本测试?


编辑:我希望像Python的单元测试的shell脚本简单的东西,比如:

assertEquals expected.txt commandline 
assertError commandline --bogus 
assertStatus 11 commandline baddata.in 
+0

关于这些脚本的任何上下文?他们对环境敏感吗? (即,向服务器发出HTTP请求,需要某些位置的文件等)。 – sethcall 2012-03-06 16:18:23

+0

@sethcall好问题。有许多脚本不同地依赖于测试数据,几个数据库,http请求和另一个内部项目(当前由环境变量引用)。我们可以为这些测试创建足够的环境。 – Reece 2012-03-06 17:42:44

回答

1

我不知道该怎么“标准”,这是的,但如果你真正在实践TDD您的脚本也应该使用TDD进行开发。您如何将您的TDD测试与Jenkins连接起来取决于您所使用的TDD框架:例如,您可以生成JUnit报告,例如Jenkins可以读取,或者您的测试可以简单地返回失败状态等。

+0

这正是问题所在。我想使用Jenkins为脚本启用TDD。对于语言,有框架。有没有命令行的框架? – Reece 2012-03-07 06:47:49

+1

我使用了很少的命令行脚本(主要依赖ANT ant Python),但所有这些都值得[这里是维基百科关于它的说法](http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#Shell)。 – 2012-03-07 06:57:34

+0

谢谢@malenkiy_scot ...维基百科页面提供了一个很好的总结。很难相信这个网页在我的许多搜索中没有出现。 – Reece 2012-03-18 02:09:14

0

如果您的脚本需要另一个项目,那么我的倾向是做一个新的詹金斯项目,说'system-qa'。

这将是python项目的下游项目,并依赖于python项目和内部项目。

如果您使用依赖关系解析/发布技术,比如apache ivy http://ant.apache.org/ivy/,并且这些现有项目是否要发布其代码的打包版本(就像.tar一样简单.gz,也许),然后system-qa项目可以为python包和内部项目包声明依赖项(再次使用ivy),使用常青藤下载它,提取/安装它,运行测试并退出。因此,总之,system-qa项目的构建脚本负责检索依赖项,针对这些依赖项运行测试,然后发布标准输出测试格式(如junit xml)(但最少返回0或非0值向詹金斯报告如何建造)。

我认为这是一个技术上正确的解决方案,但也有很多工作。需要判断电话,如果它是值得的。

+0

说明如何使用apache常青藤在项目之间移动项目工件。如果你只有一个无人机和这些项目的一个有效版本,那么你可以做出简化的假设;就像只是将您提到的环境变量设置为/ home/jenkinsbuild/workspace/inhouse-project,而不是使用常青藤。 – sethcall 2012-03-06 21:32:18

3

你有没有看着shunit2:http://code.google.com/p/shunit2/

它可以让你写的Bourne,bash或ksh的脚本可测试的shell脚本。

不知道如何将它集成到你正在描述的内容中,但它产生的输出与其他单元测试套件相似。

+0

谢谢凯文。在我问的时候,我并不知道,但是我通过malenkiy_scot提供的链接维基百科链接找到它。 shunit2正是我寻找的东西。 – Reece 2012-04-08 21:04:29

相关问题