返回介绍

10.3 执行测试代码

发布于 2024-01-21 17:11:03 字数 4092 浏览 0 评论 0 收藏 0

现在我们拿一个简单的 Python 项目的测试代码作为例子执行一下。Python 项目由版本控制系统保存,Jenkins 将从版本控制系统获取 Python 项目并执行测试。

10.3.1 让 Jenkins 运行简单的测试代码

首先,我们写一个包含 unittest 模块的简单的测试代码,让 Jenkins 来运行它(LIST 10.1、 LIST 10.2)。

LIST 10.1 foo.py

# -*- coding:utf-8 -*-
def divide(num1, num2):
  """ 对传值参数做除法的简单函数
  """
  return num1 / num2

LIST 10.2 test_foo.py

# -*- coding:utf-8 -*-
import unittest
import foo
class SimpleTest(unittest.TestCase):
  """ 测试做除法的函数
  """
  def test1(self):
    self.assertEqual(foo.divide(2, 2), 1)
  def test2(self):
    self.assertEqual(foo.divide(0, 1), 1)
if __name__ == "__main__":
  unittest.main()

将这两个文件保存在 Mercurial 的版本库里,放在 Jenkins 服务器上的 /var/hg/simple_test 目录下。

10.3.2 添加 Job

接下来给 Jenkins 添加 Job。Jenkins 的 Job 可以指定多种类型的任务,比如构建项目、签出代码等。现在请打开 Jenkins 面板侧边菜单的“新建”界面,如图 10.1。

图 10.1 Jenkins 的面板

在“新建”界面的“Item 名称”处输入 Job 名,选择 Job 种类。如图 10.2,这里我们输入 simple_test 作为 Job 名,种类则选择“构建一个自由风格的软件项目”,然后点击界面下部的“OK”按钮。

图 10.2 新建界面

◉ 指定源码管理系统

在 Job 设置界面的“源码管理”一栏中选择 Mercurial,随后会显示 3 个输入框,我们作如下输入。

① Repository URL:输入版本库的 URL

输入 /var/hg/simple_test

② Branch:输入 Mercurial 的分支名。留空则使用 default

这次我们要用的是 default,因此留空

③ 源码库浏览器:指定用于查看版本库更改的工具

现阶段先用默认的“自动”

NOTE

关于版本库 pull 出错

Jenkins 的 Job 从 Mercurial 上签出源码时,经常由于忘记设置版本库权限而导致 pull 出错。

安装 Jenkins 时会自动创建 jenkins 用户,执行 Job 的都是这个用户,所以一定要记得给这个用户权限。

另外,有时即便已经有权限,在执行 hg pull 时仍会遇到“不可信的用户”“不可信的群组”这类错误。这种情况一般出现在版本库的“.hg/hgrc”所有者与执行 hg 命令的用户不一致的时候。只要在 jenkins 用户的 $HOME/.hgrc 的 trusted 节中进行设置即可解决该问题。比如“不可信的用户”为 foo 、“不可信的群组”为 bar 时,则需在 hgrc 作以下设置。

[trusted]
user = foo
group = bar

此外,trusted 节的 user、group 元素可以一次指定多个值,相邻两值之间用逗号隔开。

◉ 制定日程表

然后我们来设置另一个重要项目——构建触发器。这个项目能像 cron 一样制定日程表,比如让 Job 定期执行,或者在其他 Job 结束后执行等。这里我们选择“Build periodically”。勾选之后会出现“日程表”输入框,我们在这里设置 Job 的执行间隔,具体方法与设置 crontab 时一样。比如我们想每个小时的 0 分时执行 Job,则写成下面这样。

0 * * * *

此外,在 Jenkins 的 Job 设置界面里,每一项后面都有为用户准备的帮助。各位如果遇到看不懂的项目,可以点击相应的帮助图标作参考。

◉ 设置执行测试代码的命令

最后,在“构建”选项卡处设置执行测试代码的命令。点击“增加构建步骤”之后即可选择“Execute shell”。然后在文本框中描述下述命令,如图 10.3 所示。

python test_foo.py

图 10.3 构建步骤“Execute shell”

只要把我们写 unittest 的测试用例时手动执行的命令写在这里即可。完成上述所有步骤之后点击“保存”按钮进行保存,接下来 Jenkins 将在我们指定的时刻执行 Job。

10.3.3 Job 的成功与失败

Jenkins 的 Job 可以从管理界面手动启动。现在我们试着点击面板上的“立刻构建”,启动刚才创建的 Job。

随后各位看到的应该是一个红色图标,表示“失败”。我们可以点击左侧栏“控制台输出”链接查看执行结果(图 10.4)。Jenkins 会以控制台日志的形式记录每次执行 Job 的过程,便于用户调查失败原因。

图 10.4 通过“控制台输出”查看 Job 执行失败的内容

从日志中一眼就能看出测试结果为 FAILURE 。失败的原因是测试代码有问题,所以接下来,我们要将测试用例修改成 LIST 10.3 这样,然后重新启动 Job。

LIST 10.3 test_foo.py

# -*- coding:utf-8 -*-
import unittest
import foo
class SimpleTest(unittest.TestCase):
  """ 测试做除法的函数
  """
  def test1(self):
    self.assertEqual(foo.divide(2, 2), 1)
  def test2(self):
    self.assertEqual(foo.divide(0, 1), 0)
if __name__ == "__main__":
  unittest.main()

如图 10.5,这次看到的应该是蓝色图标,测试结果为 SUCCESS 。

图 10.5 执行成功时的“控制台输出”

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文