GitLab CI是什么?在GitLab上自动化进行单元测试的方法

2024-01-03 16:42:43 浏览数 (1)

在这篇文章中,将介绍在GitLab上使用GitLab CI轻松实现单元测试自动化的方法。

首先


存在着CI(Continuous Integration,持续集成)的概念。为了提高程序开发的效率和质量,我们会持续执行构建和测试操作。具体来说,例如,每次对Git仓库进行更改并推送时,都会自动配置以执行构建和测试操作。这样,即使出现了错误破坏了构建或测试未通过,也可以通过自动运行的测试迅速发现问题。

通常,在设置CI环境时,需要准备一个用于执行构建和测试的服务器,并且需要相应的软件来启动构建和测试操作(例如Jenkins等)。

GitLab是由GitLab公司开发的开源Git仓库管理工具。它包含有Wiki功能、Issue跟踪功能、CI/CD功能等。

由于GitLab是开源软件,因此可以自行安装和管理,但GitLab公司也提供托管的GitLab服务,可以在GitLab.com上使用。在GitLab.com上,与GitHub不同的是,您可以免费管理私有仓库,这是其吸引人的地方。

在GitLab CI中,为了进行CI构建和测试,GitLab.com已经为我们准备好了服务器,因此我们无需自行准备,可以轻松配置CI。

本文将通过在GitLab.com上使用GitLab CI,演示如何轻松引入CI。我们将以Python的例子进行介绍。

创建Git仓库


那么,我们将在GitLab上实际自动化进行单元测试。首先,在GitLab.com上注册账户并登录。确保已经设置好SSH公钥等信息。

从GitLab.com点击"New Project",然后进入项目创建页面。

在"Project name"字段中输入"gitlab-ci-test",点击"Create project"创建项目。

在终端中输入以下命令:

代码语言:bash复制
git clone git@gitlab.com:[你的GitLab.com用户名]/gitlab-ci-test.git

这样,就可以克隆刚创建的项目了。

程序的创建


输入 cd gitlab-ci-test 并移动到刚克隆的仓库。作为测试对象的文件,创建一个名为 main.py 的文件,并保存以下内容:

代码语言:python代码运行次数:2复制
def plus1(x):
    return x   1

同时,作为编写单元测试的文件,创建一个名为 test_main.py 的文件,并保存以下内容:

代码语言:python代码运行次数:0复制
from main import *

def test_plus1():
    assert plus1(1) == 2

现在,你已经创建了一个函数 plus1,它会将给定的数加1并返回,以及一个测试该函数的 test_plus1 函数。

GitLab CI的设置


接下来,为了使用GitLab CI,我们需要编写GitLab CI的配置文件。要创建GitLab CI配置文件,只需在仓库的根目录下创建一个名为 .gitlab-ci.yml 的YAML文件。创建 .gitlab-ci.yml 文件,并输入以下内容:

代码语言:yaml复制
image: python:3-alpine

before_script:
  - pip install pytest pytest-cov

test:
  script:
    - pytest --cov=.

这样配置后,GitLab CI将从Docker Hub获取python镜像,然后在该镜像上顺序执行 pip install pytest pytest-covpytest --cov=.

完成以上步骤创建了 main.pytest_main.py.gitlab-ci.yml 这三个文件后,将它们推送到GitLab.com。

代码语言:bash复制
git add .
git commit -m "first commit"
git push

这将自动在GitLab.com上执行测试。访问 https://gitlab.com/[你的用户名]/gitlab-ci-test,点击左侧菜单的 "CI/CD",你将看到自动运行的测试情况。

如果测试失败,将通过电子邮件自动通知。

测试覆盖率的测量


你也可以在GitLab上获取测试覆盖率。要获取测试覆盖率,请访问GitLab.com上的仓库页面,进入「Settings→CI/CD→General pipelines→Test coverage parsing」,输入「d %s*$」,然后点击「Save changes」。然后重新运行测试,你将看到GitLab成功获取了测试覆盖率。

值得注意的是,如果你使用Scala sbt ScalaTest sbt-scoverage配置自动化测试,你可以在「Test coverage parsing」中输入「Coverage was [d .d %]」。有关配置文件如 .gitlab-ci.yml 等的设置,你可以参考官方的GitLab-examples / scala-sbt-sample-app · GitLab。

总结


在本文中,我们了解了如何使用GitLab CI轻松设置CI。

在GitLab.com上使用GitLab CI,由于可以在GitLab提供的计算机上执行构建和单元测试,因此无需准备自己的CI机器,非常方便。

如果在开发过程中没有引入CI,项目会继续发展,构建和测试会被破坏并被忽略,那么在这种状态下引入CI将会很困难。因此,尽早引入CI,保持健康的开发体制。

0 人点赞