13 自动化测试之单元测试

在上一篇中,我们讨论了如何使用版本控制系统进行合并和拉取请求,这为我们的 CI/CD 流程打下了坚实的基础。随着我们的代码逐步发展,确保代码的质量和可靠性变得至关重要。接下来,我们将重点关注自动化测试,特别是单元测试。

单元测试概述

单元测试是对代码中最小可测试单元(通常是函数或方法)进行验证的过程。目的是确保每个单元按预期工作。通过编写单元测试,我们能在代码修改后的早期阶段发现潜在的错误,从而提高代码的稳定性。

单元测试的重要性

  • 早期发现问题:单元测试能在开发过程的早期发现问题,避免在后期大规模集成时出现大量 bug。
  • 文档化代码:良好的单元测试可以作为代码的“活文档”,便于其他开发者理解代码的目的和用法。
  • 重构信心:当你需要重构代码时,单元测试能够确保更改不会引入新错误。
  • 简化调试:当测试失败时,定位问题的范围变小,帮助你快速查找并解决 bug。

编写单元测试

在实践中,我们将使用 Python 作为示例,并通过 unittest 框架来编写单元测试。以下是一个简单的实例代码,我们将为其编写单元测试。

假设我们有一个简单的数学函数 add,用于计算两个数的和:

1
2
3
4
5
# math_functions.py

def add(a, b):
"""返回两个数的和"""
return a + b

编写单元测试

接下来,我们将在 test_math_functions.py 文件中为 add 函数编写单元测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# test_math_functions.py

import unittest
from math_functions import add

class TestMathFunctions(unittest.TestCase):

def test_add(self):
self.assertEqual(add(1, 2), 3)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(0, 0), 0)
self.assertEqual(add(-1, -1), -2)

if __name__ == '__main__':
unittest.main()

运行测试

在终端中,我们可以使用以下命令运行测试:

1
python -m unittest test_math_functions.py

如果一切顺利,你将看到类似以下的输出,表明测试通过:

1
2
3
4
5
....
----------------------------------------------------------------------
Ran 4 tests in 0.001s

OK

集成到 CI/CD 流程

现在我们已经成功地为我们的函数编写了单元测试,接下来我们需要确保这些测试在我们的 CI/CD 流程中自动运行。

集成示例

在常见的 CI/CD 工具中(如 GitHub Actions, GitLab CI/CD, Jenkins 等),我们都可以设置一个工作流来运行单元测试。以下是一个简单的 GitHub Actions 示例配置文件 .github/workflows/ci.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
name: CI Pipeline

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'

- name: Install dependencies
run: |
pip install -r requirements.txt

- name: Run tests
run: |
python -m unittest discover

这个工作流设置了 CI/CD 的一个基本结构,每当有代码推送或合并请求时,它都会自动检查代码并运行单元测试。

总结

在本篇中,我们讨论了单元测试的基本概念及其重要性,通过具体的代码示例和测试案例展示了如何编写和运行单元测试。最后,我们介绍了如何将单元测试集成到 CI/CD 流程中,为接下来的集成测试打下良好的基础。

在下一篇中,我们将继续深入探讨自动化测试之集成测试,期待与您在下一篇中再次相见!

13 自动化测试之单元测试

https://zglg.work/cicd-pipeline-automation/13/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论