在这篇文章中,将介绍在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
的文件,并保存以下内容:
def plus1(x):
return x 1
同时,作为编写单元测试的文件,创建一个名为 test_main.py
的文件,并保存以下内容:
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
文件,并输入以下内容:
image: python:3-alpine
before_script:
- pip install pytest pytest-cov
test:
script:
- pytest --cov=.
这样配置后,GitLab CI将从Docker Hub获取python镜像,然后在该镜像上顺序执行 pip install pytest pytest-cov
和 pytest --cov=.
。
完成以上步骤创建了 main.py
、test_main.py
、.gitlab-ci.yml
这三个文件后,将它们推送到GitLab.com。
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,保持健康的开发体制。