第二章:仿真环境搭建——Linux基础命令回顾、Python环境配置、虚拟环境管理

说实话,很多做测试的同学一上来就急着写脚本,结果环境没搭好,折腾半天跑不起来。我见过太多这样的案例了。这一章,咱们就把仿真环境的基础打扎实。

2.1 Linux基础命令回顾

仿真回归测试,说白了就是在Linux服务器上跑自动化。你连基本的文件操作、进程管理都不会,后面寸步难行。我个人习惯把常用命令分成几类,记牢了就够用。

2.1.1 文件与目录操作

这些命令我每天至少用几十次,闭着眼睛都能敲出来。

# 查看当前目录
pwd

# 列出文件(-l 显示详情,-a 显示隐藏文件)
ls -la

# 切换目录
cd /home/test/project

# 创建目录(-p 递归创建)
mkdir -p test_case/report

# 复制文件
cp source.py target.py

# 移动/重命名
mv old_name.py new_name.py

# 删除文件(-r 递归删除目录)
rm -rf temp_dir

# 查看文件内容(前10行)
head -n 10 log.txt

# 实时查看日志(这个在调试脚本时太常用了)
tail -f test.log
我的小技巧:tail -f 看日志时,配合 grep 过滤关键字,比如 tail -f test.log | grep "ERROR",能快速定位问题。

2.1.2 权限与进程管理

嗯,这里要注意。很多新手在Linux上跑脚本,遇到权限问题就懵了。我曾经因为忘记给脚本加执行权限,排查了半小时。

# 修改文件权限(chmod 755 表示所有者可读写执行,其他人可读可执行)
chmod 755 run_test.sh

# 修改文件所有者
chown test_user:test_group test.py

# 查看进程
ps aux | grep python

# 强制结束进程(-9 是强制杀死)
kill -9 12345

# 后台运行脚本(nohup 让进程忽略挂断信号)
nohup python run_test.py &
避坑指南: 我曾经在服务器上直接 kill -9 了一个正在写数据库的进程,结果数据损坏了。建议先用 kill -15 优雅终止,不行再上 -9

2.1.3 文本处理三剑客

做测试的,天天跟日志、配置文件打交道。grep、sed、awk 这三个工具,你想想看,学会了能省多少事。

# grep:搜索关键字(-r 递归,-n 显示行号)
grep -rn "AssertionError" test_report/

# sed:替换文本(-i 直接修改文件)
sed -i 's/old_string/new_string/g' config.py

# awk:按列处理(默认以空格分隔)
awk '{print $1, $3}' test_result.txt

举个例子,我经常用一行命令统计测试结果:

# 统计日志中 PASS 和 FAIL 的数量
grep -c "PASS" test.log
grep -c "FAIL" test.log

2.2 Python环境配置

Python版本问题,可以说是测试环境里最大的坑之一。我见过团队因为有人用了Python 3.6,有人用了3.10,结果脚本跑出来的结果都不一样。

2.2.1 检查Python版本

# 查看Python版本
python --version
python3 --version

# 查看Python安装路径
which python3
重要: 建议统一使用 Python 3.8+。Python 2 在2020年就停止维护了,千万别再用。

2.2.2 安装Python(以Ubuntu为例)

# 更新包列表
sudo apt update

# 安装Python 3
sudo apt install python3 python3-pip

# 验证安装
python3 --version
pip3 --version

如果你用的是CentOS或RHEL,命令稍有不同:

sudo yum install python3 python3-pip

2.2.3 pip的基本使用

pip是Python的包管理工具。说白了,你要用第三方库,就得靠它。

# 安装包
pip install requests

# 安装指定版本
pip install pytest==7.4.0

# 卸载包
pip uninstall requests

# 列出已安装的包
pip list

# 导出依赖到文件(这个在分享项目时特别有用)
pip freeze > requirements.txt

# 从文件安装依赖
pip install -r requirements.txt
我的习惯: 每次新建项目,第一件事就是生成 requirements.txt。这样别人拉下代码,直接 pip install -r requirements.txt 就能跑起来,省心。

2.3 虚拟环境管理

为什么要用虚拟环境?你想想看,项目A需要Django 2.2,项目B需要Django 4.0。如果都装到系统里,迟早要打架。虚拟环境就是给每个项目一个独立的Python空间。

2.3.1 venv:Python自带的虚拟环境

venv是Python 3.3+自带的,不需要额外安装。我个人比较推荐新手先用这个,简单直接。

# 创建虚拟环境(会在当前目录生成 venv 文件夹)
python3 -m venv venv

# 激活虚拟环境(Linux/Mac)
source venv/bin/activate

# 激活后,命令行前面会出现 (venv) 标识
# 这时候安装的包只在这个环境里生效
pip install pytest

# 退出虚拟环境
deactivate
注意: 激活后,一定要确认命令行前面有 (venv) 标识。我曾经忘了激活,直接把包装到了系统环境里,结果搞乱了。

2.3.2 pipenv:更高级的虚拟环境管理

venv虽然简单,但有个痛点:它不自动管理依赖版本。pipenv就是来解决这个问题的。它会自动生成 PipfilePipfile.lock,锁定每个依赖的版本。

# 安装pipenv
pip install pipenv

# 创建虚拟环境并安装依赖
pipenv install requests

# 激活虚拟环境
pipenv shell

# 安装开发依赖(比如pytest只在开发时用)
pipenv install --dev pytest

# 查看依赖关系
pipenv graph

# 退出虚拟环境
exit

pipenv有个好处:它会自动检测项目根目录下的 Pipfile,你不需要手动指定环境路径。我团队现在统一用pipenv,省去了很多环境不一致的问题。

2.3.3 两种方式对比

特性 venv pipenv
是否需要额外安装 Python自带 需要 pip install
依赖版本锁定 不支持 支持(Pipfile.lock)
依赖关系图 不支持 支持(pipenv graph)
学习成本
适用场景 个人小项目 团队协作项目
避坑指南: 我曾经在项目里混用了venv和pipenv,结果两个环境互相干扰,折腾了一下午才清理干净。建议一个项目只选一种虚拟环境管理方式,不要混用。

2.4 实战:搭建一个仿真测试环境

光说不练假把式。咱们来搭一个真实的仿真测试环境。

# 1. 创建项目目录
mkdir -p simulation_test/{scripts,test_cases,reports,config}

# 2. 进入项目目录
cd simulation_test

# 3. 创建虚拟环境(选一种方式)
# 方式一:venv
python3 -m venv venv
source venv/bin/activate

# 方式二:pipenv
pip install pipenv
pipenv install

# 4. 安装常用测试库
pip install pytest pytest-html requests

# 5. 生成依赖文件
pip freeze > requirements.txt

# 6. 验证环境
python -c "import pytest; print('环境搭建成功!')"

嗯,到这里,你的仿真测试环境就搭好了。后面写脚本、跑测试,都在这个环境里进行,不会污染系统Python。

我的建议: 把环境搭建的步骤写成脚本,比如 setup_env.sh。这样新同事加入,或者换机器,直接跑脚本就行,不用每次都手动敲一遍。

这一章的内容就这些。说白了,Linux命令是基本功,Python环境是地基,虚拟环境是隔离墙。这三样搞定了,后面的自动化脚本才能跑得稳。下一章,咱们开始写第一个仿真测试脚本。