首先更新系统软件包列表,确保后续安装的软件包是最新版本:
sudo apt update && sudo apt upgrade -y
安装Python 3及包管理工具pip(Ubuntu 20.04及以上版本通常预装Python 3,可通过python3 --version验证):
sudo apt install python3 python3-pip -y
验证Python和pip版本:
python3 --version # 确认Python 3安装
pip3 --version # 确认pip安装
虚拟环境可避免不同项目间的依赖冲突,推荐使用Python 3自带的venv模块:
# 安装venv模块(若未预装)
sudo apt install python3-venv -y
# 创建项目目录并进入
mkdir my_python_test && cd my_python_test
# 创建虚拟环境(venv为环境名称,可自定义)
python3 -m venv venv
# 激活虚拟环境(激活后终端提示符会显示环境名)
source venv/bin/activate
激活后,所有通过pip安装的包都会存放在虚拟环境中,不会影响全局Python环境。
pytest是Python最流行的测试框架之一,功能强大且易于上手,推荐优先使用:
pip install pytest
验证pytest安装:
pytest --version # 查看pytest版本
(注:若需使用unittest(Python内置框架),可直接通过import unittest使用,无需额外安装。)
在项目目录中创建tests子目录(可选,但符合常规项目结构),并新建测试文件(如test_example.py)。测试文件需以test_开头,测试函数也需以test_开头,pytest会自动识别并运行:
# tests/test_example.py
def add(a, b):
"""示例函数:两数相加"""
return a + b
def test_add():
"""测试add函数"""
assert add(2, 3) == 5 # 断言1:2+3=5
assert add(-1, 1) == 0 # 断言2:-1+1=0
assert add(0, 0) == 0 # 断言3:0+0=0
在项目根目录(包含tests目录)下,激活虚拟环境后运行以下命令:
pytest
pytest会自动发现并运行所有符合命名规则的测试文件和函数,输出结果示例:
============================= test session starts ==============================
collected 1 item
tests/test_example.py . [100%]
============================== 1 passed in 0.01s ===============================
(注:若测试通过,会显示. ;若失败,会显示详细的错误信息。)
创建pytest.ini文件(位于项目根目录),自定义pytest行为(如指定测试目录、增加详细输出):
# pytest.ini
[pytest]
addopts = -v # 增加详细输出(显示每个测试函数的名称)
testpaths = tests # 指定测试目录为tests(默认会查找tests目录及子目录)
配置后,运行pytest时会自动应用这些设置,输出更详细的信息。
通过GitHub Actions实现代码推送后自动运行测试,步骤如下:
.github/workflows/python-tests.yml文件;# .github/workflows/python-tests.yml
name: Python Test
on: [push] # 当代码推送到仓库时触发
jobs:
build:
runs-on: ubuntu-latest # 使用Ubuntu环境运行
steps:
- uses: actions/checkout@v2 # 拉取代码
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: '3.8' # 指定Python版本
- name: Install dependencies
run: |
python -m pip install --upgrade pip # 升级pip
pip install pytest # 安装pytest
- name: Run tests
run: pytest # 运行测试
配置完成后,每次推送代码到GitHub仓库,GitHub Actions都会自动创建一个Ubuntu环境,安装依赖并运行测试。
通过以上步骤,你已在Ubuntu上搭建了一个完整的Python测试环境,支持虚拟环境隔离、自动化测试及持续集成,可满足大多数Python项目的测试需求。