GitHub Actions 与 Selenium 入门
了解 GitHub Actions:一种持续集成和持续交付工具。
GitHub Actions
你可能会好奇接下来该做什么。你已经有一个可运行的应用程序,并在本地机器上设置了一些自动化测试,现在可能希望将应用程序部署出去,供他人使用。
GitHub 是一个可以将代码存储在远程服务器上的平台,这有助于简化代码部署和协作流程。
在将代码部署到生产环境之前,我们可以手动运行测试以确保其通过且没有错误。不过,GitHub 提供了一项近年来逐渐普及的工具——GitHub Actions。
GitHub Actions 是一种持续集成或持续交付工具,功能丰富。我们这里仅介绍其中几个关键功能。将代码部署到 GitHub 后,我们可以配置 GitHub Actions 自动启动一个 Django 服务器,并为我们运行测试。
先决条件
本课程需要一个 GitHub 账号,以及在本地系统上安装 Git(一款免费开源的分布式版本控制系统)。
要检查 Git 是否已安装,请在终端中输入以下命令:
1git --version
你应该能看到 Git 的版本信息。
实践示例
访问 https://github.com/Samuel-2626/django-tdd/tree/main,点击“Fork”按钮,在你的 GitHub 账户中创建该项目的一个副本。
接着,通过终端克隆你自己的仓库:
1git clone https://github.com/{{ 你的 GitHub 用户名 }}/django-tdd.git
将
{{ 你的 GitHub 用户名 }}替换为你实际的 GitHub 用户名,例如https://github.com/你的用户名/django-tdd.git。
你会得到项目的完整工作目录。用代码编辑器打开该项目。
在 django-tdd 项目的根目录下,创建一个名为 .github 的新文件夹:
1mkdir .github
在终端中进入该文件夹:
1cd .github
在 .github 文件夹内再创建一个名为 workflows 的子文件夹:
1mkdir workflows
进入 workflows 文件夹:
1cd workflows
在 workflows 文件夹中,创建一个新文件 django-tdd-actions.yml:
1touch django-tdd-actions.yml
将以下内容粘贴到该文件中:
1name: "运行电子图书馆单元测试" 2on: [push] 3 4jobs: 5 build: 6 7 runs-on: ubuntu-latest 8 9 steps: 10 - uses: actions/checkout@v2 11 - name: 设置 Python 3.9 12 uses: actions/setup-python@v2 13 with: 14 python-version: 3.9 15 - name: 安装依赖 16 run: | 17 python -m pip install --upgrade pip 18 pip install -r requirements.txt 19 - name: 执行 makemigrations 20 run: python manage.py makemigrations 21 - name: 执行 migrations 22 run: python manage.py migrate 23 - name: 运行 Django 单元测试 24 run: python manage.py test
这里我们使用 YAML 语法定义了一个工作流,这是一种配置语言。整个配置包含三个部分:第一是工作流的 name;第二是 on 字段,值为 push,表示当代码推送到 GitHub 时触发此工作流。
第三部分是 jobs,它执行一系列任务,包括安装依赖、生成迁移文件、执行数据库迁移,以及运行测试。
通过以下命令按顺序提交并推送更改到 GitHub:
1git add . 2git commit -m "添加 GitHub Actions 工作流" 3git push
推送成功后,GitHub Actions 会自动运行。如果测试失败,你会收到邮件通知,并在提交记录旁看到一个红色的叉号。
如果测试成功,则不会收到邮件,而是看到一个绿色的对勾标记。
注意:这一机制还可以进一步扩展,实现只有通过测试的代码才能被合并。
若想深入了解 GitHub Actions 在此过程中的具体行为,可返回该 GitHub 仓库,点击“Actions”标签页查看详细信息。
Selenium
到目前为止,我们一直从开发者的视角,通过单元测试来验证应用。但我们也能够从用户的角度进行测试,这就是所谓的 浏览器测试。
Selenium 可以帮助我们实现这一点,因为它能模拟网页浏览器,并通过 WebDriver 模拟用户在网页上的交互行为。
这种测试方式也被称为 功能测试。为了构建一个完整且可靠的测试套件,我们在 Django 项目中也应编写相应的功能测试。