2. 测试环境搭建:Python环境、Pytest框架、虚拟环境管理、常用库安装

做嵌入式测试,第一件事不是写脚本,而是把环境搭稳。我见过太多人上来就 pip install,结果依赖冲突、版本不对、跑起来报错,折腾半天才发现是环境问题。说白了,环境搭不好,后面全是白费功夫。

这一章,我们就从零开始,把 Python 环境、虚拟环境、Pytest 框架、还有那几个常用的库(paramiko、serial、pyvisa)全部装好、配好、跑通。跟着我的节奏来,半小时内搞定。

2.1 Python 环境安装与版本选择

我个人习惯用 Python 3.8 到 3.11 之间的版本。为什么?因为 paramiko 和 pyvisa 在 3.12 上还有兼容性问题。你想想看,项目急着上线,结果库装不上,多尴尬。

我的建议: 直接装 Python 3.10.11,稳定、兼容性好,社区支持也最全。

安装步骤(Windows / Linux / macOS)

  1. 下载安装包: 去 python.org 下载对应系统的安装包。Windows 选 Windows installer (64-bit)。
  2. 安装时勾选: "Add Python to PATH"(这个必须勾,不然命令行找不到 python)。
  3. 验证安装: 打开终端,输入 python --version,看到版本号就对了。
# 验证 Python 安装
python --version
# 输出示例:Python 3.10.11

# 验证 pip
pip --version
# 输出示例:pip 23.2.1 from ... (python 3.10)
注意: 如果你电脑上同时有 Python 2 和 Python 3,记得用 python3 和 pip3 来区分。我曾经在一个项目里搞混了,结果脚本在 Python 2 下跑了一整天,全是编码错误。

2.2 虚拟环境管理:为什么必须用?

你想想看,一个项目用 paramiko 2.8,另一个项目用 paramiko 3.0。如果全装到系统里,早晚会冲突。虚拟环境就是干这个的——每个项目有自己的小天地,互不干扰。

Python 自带的 venv 模块就够用,不需要额外装 virtualenv。我一般这么操作:

创建和激活虚拟环境

# 创建虚拟环境(在项目根目录下)
python -m venv venv

# 激活虚拟环境
# Windows:
venv\Scripts\activate

# Linux / macOS:
source venv/bin/activate

# 看到终端前面多了 (venv) 就说明激活成功了

核心原则: 每个嵌入式测试项目,单独建一个虚拟环境。不要混用,不要偷懒。我吃过亏——有一次把自动化测试脚本和生产环境的库混在一起,结果升级库的时候把生产环境搞崩了,被领导骂了一下午。

退出虚拟环境

deactivate

嗯,就这么简单。退出后终端前面的 (venv) 就消失了。

2.3 Pytest 框架安装与基础配置

Pytest 是我最常用的测试框架。比 unittest 简洁,比 nose 活跃。说白了,嵌入式测试脚本用 pytest,写起来快、跑起来稳、报告也漂亮。

安装 Pytest

# 确保在虚拟环境中
pip install pytest

# 验证安装
pytest --version
# 输出示例:pytest 7.4.0

基础配置文件:pytest.ini

在项目根目录下创建一个 pytest.ini,写上这些:

[pytest]
# 测试文件命名规则
python_files = test_*.py *_test.py
# 测试函数命名规则
python_functions = test_*
# 测试类命名规则
python_classes = Test*
# 日志级别
log_cli = true
log_cli_level = INFO
# 测试结果输出格式
addopts = -v --tb=short
小技巧: --tb=short 让错误信息只显示关键行,不会刷屏。调试的时候可以改成 --tb=long,看完整堆栈。

第一个 Pytest 测试脚本

创建一个 test_demo.py:

# test_demo.py
def test_addition():
    assert 1 + 1 == 2

def test_subtraction():
    assert 3 - 1 == 2

def test_fail_example():
    # 这个会失败,用来演示错误输出
    assert 2 * 2 == 5

运行:

pytest

你会看到绿色的 . 表示通过,红色的 F 表示失败。嗯,第三个测试会红,正好看看错误信息长什么样。

2.4 常用库安装:paramiko、serial、pyvisa

这三个库是嵌入式测试的标配。paramiko 管 SSH 远程控制,serial 管串口通信,pyvisa 管仪器控制。我一个个说。

2.4.1 paramiko:SSH 远程控制

嵌入式设备很多是 Linux 系统,通过 SSH 登录、执行命令、传文件,paramiko 就是干这个的。

pip install paramiko

验证安装:

python -c "import paramiko; print(paramiko.__version__)"

典型场景: 通过 SSH 登录到嵌入式设备,执行 uname -a 查看系统信息,或者上传固件、下载日志。我在一个智能网关项目里,用 paramiko 批量升级了 200 台设备,全程自动化,省了三天人工。

2.4.2 pyserial:串口通信

串口是嵌入式调试的命脉。pyserial 让 Python 能读写串口,跟设备交互。

pip install pyserial

验证安装:

python -c "import serial; print(serial.__version__)"
避坑指南: 我曾经在 Windows 上遇到串口被占用的问题——设备管理器里能看到 COM3,但 pyserial 就是打不开。后来发现是某个调试工具没关干净。解决办法:重启电脑,或者用 mode 命令释放串口。

2.4.3 pyvisa:仪器控制

示波器、万用表、信号发生器,这些仪器通常用 GPIB、USB 或以太网控制。pyvisa 是 Python 和仪器之间的桥梁。

pip install pyvisa pyvisa-py

验证安装:

python -c "import pyvisa; rm = pyvisa.ResourceManager(); print(rm.list_resources())"
注意: pyvisa 需要后端。Windows 上推荐装 NI-VISA(官方驱动),Linux 上可以用 pyvisa-py 作为纯 Python 后端。如果只是简单测试,pyvisa-py 够用了。

2.5 依赖管理与 requirements.txt

项目做大了,依赖会越来越多。手动一个个装不现实,也容易漏。用 requirements.txt 统一管理。

生成 requirements.txt

# 在虚拟环境中,导出当前所有已安装的包
pip freeze > requirements.txt

生成的 requirements.txt 内容大概长这样:

paramiko==3.3.1
pyserial==3.5
pytest==7.4.0
pyvisa==1.13.0
pyvisa-py==0.6.1

从 requirements.txt 安装

pip install -r requirements.txt

最佳实践: 每次新增依赖,都更新 requirements.txt。团队协作时,别人拉下代码直接 pip install -r requirements.txt 就能复现环境。我见过一个项目,没有 requirements.txt,新人配环境配了两天——别走那条路。

2.6 本章知识体系总览

下面这张图把本章的核心内容串起来了。你可以把它当作环境搭建的检查清单。

测试环境搭建知识体系 测试环境搭建知识体系 测试环境搭建 Python 环境 虚拟环境管理 Pytest 框架 常用库安装 版本选择 3.10 PATH 配置 pip 验证 python -m venv 激活 / 退出 项目隔离 pytest.ini 配置 测试用例编写 运行与报告 paramiko (SSH) pyserial (串口) pyvisa (仪器) 核心原则:每个项目独立虚拟环境 + requirements.txt 管理依赖 避免全局安装,防止依赖冲突

2.7 常见问题与避坑指南

问题 原因 解决办法
pip 命令找不到 Python 未添加到 PATH 重新安装,勾选 "Add Python to PATH"
虚拟环境激活后 pip 还是全局的 激活命令没执行成功 检查终端前面是否有 (venv) 标识
pyserial 打开串口报错 串口被占用或权限不足 关闭其他串口工具;Linux 下加 sudo 或加入 dialout 组
pyvisa 找不到仪器 后端未安装或驱动不对 Windows 装 NI-VISA;Linux 用 pyvisa-py
paramiko 连接超时 IP/端口不对,或防火墙拦截 先用 ping 和 telnet 测试网络连通性

我曾经踩过的坑: 有一次在 Linux 服务器上装 pyvisa,忘了装 libvisa 依赖,结果 ResourceManager() 一直报错。折腾了两小时才发现是少了个 .so 文件。所以,Linux 上装 pyvisa 之前,先跑一下 sudo apt-get install libvisa0。

2.8 快速验证清单

环境搭完,别急着写脚本。先跑一遍这个清单,确保所有组件都正常工作:

  1. Python 版本: python --version → 3.10.x
  2. 虚拟环境: 激活后 pip list → 只有基础包
  3. Pytest: pytest --version → 7.x
  4. paramiko: python -c "import paramiko" → 无报错
  5. pyserial: python -c "import serial" → 无报错
  6. pyvisa: python -c "import pyvisa" → 无报错
  7. requirements.txt: pip freeze > requirements.txt → 文件生成成功