环境准备:Python环境搭建与必要第三方库安装
说实话,做自动化测试这么多年,我踩过最大的坑就是环境没配好。你想想看,脚本写得再漂亮,一运行报个「ModuleNotFoundError」,那得多憋屈?
所以这一章,咱们就把地基打牢。我个人习惯先把Python环境整利索了,再装那几个必备库。别急,一步步来。
Python环境搭建
先说说Python版本的选择。我建议用Python 3.8以上版本,为什么?因为3.6已经停止维护了,3.7也快了。我在项目中遇到过用Python 3.6写的脚本,换到新机器上死活装不上某些库,最后发现是版本太老,库都不支持了。
具体步骤其实很简单:
- 去官网下载:打开python.org,找到Downloads,选你的操作系统版本
- 安装时勾选:记得把「Add Python to PATH」打上勾。嗯,这里要注意,很多人忘了这一步,后面命令行里敲python就报错
- 验证安装:打开终端或命令提示符,输入
python --version,看到版本号就对了
虚拟环境:别让依赖打架
你想想看,项目A需要requests 2.25,项目B需要requests 2.26,装在一个环境里不就乱套了?
虚拟环境就是干这个的。我每个项目都会单独建一个虚拟环境,互不干扰。
# 创建虚拟环境
python -m venv test_env
# 激活(Windows)
test_env\Scripts\activate
# 激活(Mac/Linux)
source test_env/bin/activate
# 退出
deactivate
激活后,命令行前面会出现(test_env)的标识,说明你已经在虚拟环境里了。这时候装任何库都不会影响到全局。
四个必备库详解
好,环境搭好了,咱们来装库。这章要用的四个库,说白了就是自动化测试的四大护法。
| 库名 | 用途 | 安装命令 |
|---|---|---|
| os | 文件和路径操作 | Python内置,无需安装 |
| subprocess | 执行外部命令和脚本 | Python内置,无需安装 |
| argparse | 命令行参数解析 | Python内置,无需安装 |
| logging | 日志记录 | Python内置,无需安装 |
看到没?这四个全是Python标准库,不需要额外装。但别高兴太早,我后面会讲一些常用的第三方库,比如pytest、requests,那些才需要pip安装。
1. os库:文件和路径的管家
做批量测试,免不了要遍历文件夹、拼接路径、检查文件是否存在。os库就是干这个的。
import os
# 获取当前目录
current_dir = os.getcwd()
# 拼接路径
test_case_dir = os.path.join(current_dir, "test_cases")
# 遍历文件夹
for root, dirs, files in os.walk(test_case_dir):
for file in files:
if file.endswith(".py"):
print(f"找到测试脚本:{file}")
我曾经犯过一个低级错误:直接用字符串拼接路径,结果在Linux上跑的时候路径分隔符不对,全崩了。从那以后,我老老实实用os.path.join。
2. subprocess库:调用外部脚本的利器
批量运行测试用例,说白了就是让Python去调用一个个测试脚本。subprocess就是干这个的。
import subprocess
# 运行一个测试脚本
result = subprocess.run(
["python", "test_case_001.py"],
capture_output=True,
text=True,
timeout=30
)
# 检查运行结果
if result.returncode == 0:
print("测试通过")
else:
print(f"测试失败:{result.stderr}")
timeout参数一定要加!我曾经有个测试脚本死循环了,没设超时,整个自动化流程卡了整整一个晚上。嗯,血的教训。
3. argparse库:让脚本更灵活
你想想看,每次改个参数都要去改代码,多麻烦。argparse让你可以在命令行传参数,脚本就灵活多了。
import argparse
parser = argparse.ArgumentParser(description="批量运行测试用例")
parser.add_argument("--test-dir", required=True, help="测试用例目录")
parser.add_argument("--report-dir", default="./reports", help="报告输出目录")
parser.add_argument("--parallel", type=int, default=1, help="并行执行数量")
args = parser.parse_args()
print(f"测试目录:{args.test_dir}")
print(f"报告目录:{args.report_dir}")
print(f"并行数:{args.parallel}")
这样你就能这样运行了:
python run_tests.py --test-dir ./cases --parallel 4
4. logging库:记录一切
测试跑了多久?哪个用例失败了?失败原因是什么?这些信息不记下来,出了问题你都不知道从哪查起。
import logging
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('test_run.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# 使用日志
logger.info("开始执行测试用例")
try:
# 执行测试...
logger.info("测试用例执行成功")
except Exception as e:
logger.error(f"测试用例执行失败:{str(e)}")
知识体系总览
说了这么多,咱们用一张图把这一章的核心逻辑串起来。你一看就明白了。
这张图把这一章的内容分成了三块:左边是环境搭建的基础操作,中间是四个核心库,右边是它们在实际测试中的应用场景。说白了,你把这三点搞明白了,环境准备这块就稳了。
好了,环境准备好了,咱们就可以开始写真正的批量测试脚本了。