3

我们有一个项目,其中包含 Python 和 Scala 包库,以及 Bourne、Python 和 Perl 可执行脚本。尽管该库具有良好的测试覆盖率,但我们没有对脚本进行任何测试。

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

是否有标准/通用方法可以在 Jenkins 中合并脚本测试?


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

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

3 回答 3

4

你看过shunit2吗:https ://github.com/kward/shunit2

它允许您在 Bourne、bash 或 ksh 脚本中编写可测试的 shell 脚本。

不确定如何将其集成到您所描述的内容中,但它会生成类似于其他单元测试套件的输出。

于 2012-04-08T19:11:14.447 回答
1

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

于 2012-03-06T16:32:47.567 回答
0

如果您的脚本需要另一个项目,那么我倾向于创建一个新的 jenkins 项目,例如“system-qa”。

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

如果你正在使用依赖解析/发布技术,比如apache ivy http://ant.apache.org/ivy/,并且如果这些现有项目要发布其代码的打包版本(就像 .tar.gz 一样简单,也许),然后 system-qa 项目可以为 python 包和内部项目包声明依赖项(同样,使用 ivy),使用 ivy 下载它,提取/安装它,运行测试,然后退出。

所以总而言之,system-qa 项目的构建脚本负责检索依赖项,针对这些依赖项运行测试,然后可能发布标准化的输出测试格式,如 junit xml(但至少返回 0 或非 0 以提示 Jenkins关于如何建造的)。

我认为这是一个技术上正确的解决方案,但也需要大量的工作。如果值得,则需要进行判断。

于 2012-03-06T21:20:10.673 回答