2、Python基础速通(一):环境搭建、解释器与IDE选择、第一个自动化测试脚本
各位好,欢迎来到《脚本驱动下的嵌入式测试效率革命》的第二讲。
说实话,很多做嵌入式测试的朋友,一听到「Python」就觉得头大。觉得那是纯软件工程师的事。我当年也这么想。直到有一次,我手动测一个串口协议,重复了三百多次同样的操作,手指都快按抽筋了。那天晚上我花了两个小时,写了个二十行的Python脚本。第二天,同样的测试,机器跑了三分钟,我喝了杯咖啡。
嗯,从那以后,我就再也没离开过Python。
这一章,咱们先把地基打牢。环境搭好了,后面才能跑得快。
2.1 Python环境搭建:别让第一步卡住你
搭建环境这事儿,说简单也简单,说坑也多。我见过不少同事,卡在环境变量上,一卡就是半天。
2.1.1 下载与安装
去Python官网(python.org),下载对应你操作系统的版本。我个人建议,别追最新版。选一个稳定版,比如Python 3.8到3.10之间的版本。为什么?因为很多嵌入式测试的第三方库,对新版支持可能滞后。我在项目中就遇到过,Python 3.11刚出时,某个串口库死活装不上,最后退回到3.9才搞定。
安装时,记得勾选「Add Python to PATH」。这个选项太重要了。如果不勾,你后面在命令行敲python,系统会告诉你「找不到命令」。我曾经帮一个同事排查了半小时,最后发现就是没勾这个框。
2.1.2 验证安装
打开命令行(Windows是cmd或PowerShell,Mac/Linux是终端),输入:
python --version
如果看到类似 Python 3.9.7 的输出,恭喜你,成了。
再试一个:
pip --version
pip是Python的包管理工具,后面装第三方库全靠它。如果提示找不到pip,别慌。重新运行安装程序,选择「Modify」,把pip勾上就行。
2.2 解释器与IDE选择:工欲善其事
Python是解释型语言。说白了,就是写一行,解释一行,跑一行。不像C语言那样要先编译成二进制。这对我们做测试脚本来说,太方便了。改完代码立刻就能跑,调试效率极高。
2.2.1 解释器:CPython是主流
你从官网下载的那个Python,其实就是CPython。它是Python的官方解释器,用C语言写的。咱们做嵌入式测试,用这个就够了。别去折腾什么Jython、IronPython,那些是特殊场景用的,咱们用不上。
2.2.2 IDE选择:别纠结,选VS Code
我经常被问到:「老师,用PyCharm还是VS Code?」
我的回答很直接:新手用VS Code,老手也用VS Code。
PyCharm功能确实强大,但启动慢、吃内存。你想想看,咱们嵌入式测试工程师,电脑上往往挂着串口助手、逻辑分析仪、虚拟机,本来就够卡了。再开个PyCharm,风扇直接起飞。
VS Code轻量、启动快、插件丰富。装个Python插件,语法高亮、代码补全、调试功能全都有了。
| IDE | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| VS Code | 轻量、启动快、插件丰富 | 需要手动配置 | 日常脚本开发、嵌入式测试 |
| PyCharm | 功能全面、开箱即用 | 吃内存、启动慢 | 大型项目、纯软件开发 |
| IDLE | 自带、零配置 | 功能简陋 | 临时测试、单文件运行 |
2.3 第一个自动化测试脚本:从Hello World到串口通信
光说不练假把式。咱们直接上手写一个。
2.3.1 经典开场:Hello World
新建一个文件,叫 test_hello.py,输入:
print("Hello, 嵌入式测试!")
然后在终端里运行:
python test_hello.py
看到输出了吧?就这么简单。你第一个自动化测试脚本,诞生了。
2.3.2 进阶:读取一个配置文件
做嵌入式测试,经常要读配置文件。比如测试某个板子的IP地址、波特率等。咱们用Python的 configparser 模块来干这个。
先创建一个配置文件 config.ini:
[DUT]
ip = 192.168.1.100
port = 8080
baudrate = 115200
[TEST]
loop_count = 10
timeout = 5
然后写脚本读取它:
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
dut_ip = config['DUT']['ip']
baudrate = config['DUT']['baudrate']
loop_count = config['TEST'].getint('loop_count')
print(f"待测设备IP: {dut_ip}")
print(f"波特率: {baudrate}")
print(f"测试循环次数: {loop_count}")
运行一下。是不是比硬编码在代码里优雅多了?以后换设备,改个配置文件就行,不用动代码。
2.3.3 实战:模拟串口发送一条AT指令
这才是咱们嵌入式测试的重头戏。假设你要测试一个Wi-Fi模块,需要发AT指令看看它回不回复。
先装个串口库:
pip install pyserial
然后写脚本:
import serial
import time
# 配置串口参数
ser = serial.Serial(
port='COM3', # Windows下是COM口,Linux下是/dev/ttyUSB0
baudrate=115200,
timeout=1
)
# 发送AT指令
command = "AT\r\n"
ser.write(command.encode())
# 等待回复
time.sleep(0.5)
response = ser.read_all().decode()
print(f"发送: {command.strip()}")
print(f"接收: {response.strip()}")
# 关闭串口
ser.close()
跑一下。如果模块正常,你会看到它回复「OK」。如果不正常,检查一下串口号和波特率。我当年第一次跑这个脚本,忘了关串口助手,结果端口被占用了,报错半天才反应过来。
2.4 本章小结
这一章,咱们把Python环境搭好了,选好了趁手的IDE,还写了三个脚本。从Hello World到读配置文件,再到串口通信,一步步来,不急。
你想想看,以前手动测串口,是不是要打开串口助手,选端口、设波特率、敲指令、看回复?现在一行命令搞定。这就是脚本驱动的威力。
下一章,咱们会深入Python的核心语法。别怕,我会用嵌入式测试的例子来讲,保证你听得懂、用得上。
好,今天就到这儿。有问题随时交流。