在Ubuntu上进行Python测试的完整流程
在开始测试前,需确保Ubuntu系统已安装Python及pip(Python包管理工具)。打开终端,执行以下命令更新软件包列表并安装Python 3与pip:
sudo apt update
sudo apt install python3 python3-pip
验证安装结果:
python3 --version # 查看Python 3版本
pip3 --version # 查看pip版本
为避免不同项目间的依赖冲突,建议使用venv模块创建隔离的虚拟环境:
python3 -m venv myenv # 创建名为myenv的虚拟环境
source myenv/bin/activate # 激活虚拟环境(激活后终端提示符会显示环境名)
激活后,后续安装的依赖仅对当前环境有效。
Ubuntu下常用的Python测试框架有unittest(标准库)和pytest(第三方,更简洁强大),以下分别介绍其使用方法:
unittest是Python内置的单元测试框架,适合需要遵循标准流程的项目。
test_开头的Python文件(如test_my_module.py),并继承unittest.TestCase类。每个以test_开头的方法即为一个测试用例,使用assertEqual、assertTrue等断言方法验证结果。# test_my_module.py
import unittest
from my_module import add # 假设要测试的函数在my_module.py中
class TestMyModule(unittest.TestCase):
def test_add_positive_numbers(self):
self.assertEqual(add(2, 3), 5) # 验证2+3=5
def test_add_negative_numbers(self):
self.assertEqual(add(-1, -1), -2) # 验证-1+(-1)=-2
if __name__ == '__main__':
unittest.main() # 直接运行脚本时执行测试
python3 -m unittest test_my_module.pypython3 -m unittest discover(需确保测试文件以test_开头)pytest语法更简洁,支持参数化测试、fixtures(测试夹具)等高级功能,是当前Python生态中最流行的测试工具。
pip3 install pytest
test_开头的文件(如test_example.py),直接编写测试函数(以test_开头),使用assert语句验证结果。# test_example.py
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5 # 验证2+3=5
assert add(-1, 1) == 0 # 验证-1+1=0
pytest test_example.pypytest(自动发现当前目录及子目录下所有test_*.py文件)为确保测试覆盖了所有代码路径,可使用coverage.py工具生成覆盖率报告:
pip3 install coverage
coverage run -m pytest tests/ # 运行tests目录下的所有测试
coverage report -m # 输出终端覆盖率报告(显示未覆盖的代码行)
coverage html # 生成HTML格式的详细报告(保存在htmlcov目录)
打开htmlcov/index.html可直观查看哪些代码未被测试覆盖。通过CI工具(如GitHub Actions)可实现“代码提交即测试”的自动化流程,确保每次代码变更都不会引入错误。
.github/workflows/python-tests.yml文件,定义测试流程:name: Python Tests
on: [push, pull_request] # 触发条件:推送代码或发起Pull Request
jobs:
test:
runs-on: ubuntu-latest # 使用Ubuntu环境的GitHub Runner
steps:
- uses: actions/checkout@v4 # 拉取代码
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11' # 指定Python版本
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest coverage # 安装测试依赖
- name: Run tests
run: |
coverage run -m pytest tests/ # 运行测试并收集覆盖率数据
coverage report -m # 输出终端报告
每次推送代码到GitHub仓库时,CI流程会自动执行测试并生成覆盖率报告。通过以上步骤,你可以在Ubuntu上高效地进行Python测试,确保代码质量。根据项目需求选择合适的框架(unittest适合简单项目,pytest适合复杂项目),并结合CI工具实现自动化测试,能有效提升开发效率。