2、测试环境搭建:Python环境安装、pip包管理工具、虚拟环境配置、依赖库安装

说实话,做OTA测试这么多年,我见过太多人在环境搭建这一步就栽了跟头。有人装完Python发现pip用不了,有人项目做到一半才发现依赖冲突,还有人直接把系统Python搞崩了……嗯,这些坑我都踩过。今天咱们就把这套环境从头捋一遍,保证你以后少走弯路。

2.1 Python环境安装

先说说Python版本的选择。我个人习惯用Python 3.8或3.10,为什么?因为3.8足够稳定,大部分OTA测试库都支持;3.10性能更好,而且语法糖更香。千万别用Python 2.7了,那玩意儿2020年就退休了。

Windows用户看这里:

  1. 去官网下载安装包,记得选64位版本
  2. 安装时一定要勾选「Add Python to PATH」——我当年没勾,结果折腾了半天
  3. 安装完打开cmd,输入 python --version 验证

Mac/Linux用户简单点:

# Mac用Homebrew
brew install python@3.10

# Ubuntu/Debian
sudo apt update
sudo apt install python3.10 python3.10-dev
小技巧: 装完Python后,建议顺手装个 python3-distutils,不然有些包装不上。我在项目里吃过这个亏,折腾了一下午才发现是少了个依赖。

2.2 pip包管理工具

pip说白了就是Python的「应用商店」。你写代码需要的第三方库,全得靠它来装。Python 3.4以上版本自带pip,但版本可能比较老。

先升级pip:

python -m pip install --upgrade pip

为什么要升级?因为老版本的pip下载速度慢,而且有些新包的依赖解析会出错。我遇到过好几次,用旧pip装包报错,升级完就好了。

常用pip命令,记牢这几个就够了:

命令 作用
pip install 包名 安装包
pip install 包名==版本号 安装指定版本
pip list 查看已安装的包
pip freeze > requirements.txt 导出依赖清单
pip install -r requirements.txt 批量安装依赖
注意: 千万别用 sudo pip install!我当年手贱,用sudo装了个包,结果系统Python环境被搞乱了,最后重装了系统。用虚拟环境才是正道。

2.3 虚拟环境配置

虚拟环境这东西,说白了就是给你的每个项目建一个「独立小房间」。你想想看,项目A需要Django 2.2,项目B需要Django 4.0,如果没有虚拟环境,这两个版本打架怎么办?

Python自带的venv模块:

# 创建虚拟环境
python -m venv ota_env

# 激活(Windows)
ota_env\Scripts\activate

# 激活(Mac/Linux)
source ota_env/bin/activate

# 退出
deactivate

我个人更推荐用 virtualenvwrapper,它让虚拟环境管理变得特别方便:

pip install virtualenvwrapper

# 创建环境
mkvirtualenv ota_test

# 切换环境
workon ota_test

# 查看所有环境
lsvirtualenv

# 删除环境
rmvirtualenv ota_test
我的习惯: 每个OTA测试项目都建一个独立的虚拟环境,命名规则是「项目名_env」。比如 wifi_ota_envble_ota_env。这样即使项目再多,也不会乱。

2.4 依赖库安装

好了,环境搭好了,现在来装OTA测试需要的核心库。我整理了一份清单,都是实战中必须的:

# 创建requirements.txt
cat > requirements.txt << EOF
pyserial==3.5          # 串口通信,连设备必备
paramiko==3.3.0        # SSH连接,远程控制设备
requests==2.31.0       # HTTP请求,跟OTA服务器打交道
pytest==7.4.0          # 测试框架,写用例用
allure-pytest==2.13.0  # 测试报告,生成漂亮报表
loguru==0.7.2          # 日志记录,比logging好用一百倍
pyyaml==6.0            # 配置文件解析
pandas==2.0.3          # 数据分析,处理测试结果
EOF

# 一键安装
pip install -r requirements.txt

每个库是干嘛的?我简单说说:

  • pyserial:连开发板、连模组,全靠它。我在做Wi-Fi OTA测试时,就是用它读取设备的日志
  • paramiko:远程SSH到设备上执行命令,比如重启、刷固件
  • requests:模拟OTA升级请求,检查服务器返回
  • pytest + allure:写测试用例、生成报告,这套组合拳打遍天下
  • loguru:说实话,Python自带的logging模块太难用了。loguru一行代码搞定日志,还带颜色输出
避坑指南: 我曾经在装 pyserial 时遇到权限问题,后来发现是系统自带的 serial 模块冲突了。解决办法:在虚拟环境里装,别用系统Python。

验证安装是否成功:

python -c "import serial; print('pyserial OK')"
python -c "import paramiko; print('paramiko OK')"
python -c "import requests; print('requests OK')"

如果都没报错,恭喜你,环境搭建成功了!

最后说一句: 环境搭建是OTA测试的基石。我见过太多人一上来就写脚本,结果跑不起来才发现是环境问题。花半小时把环境配好,后面能省下半天时间。这笔账,你算算值不值?