哈喽,我是老喜!Python+Selenium自动化环境搭建 + 10道面试题,照着做就行
很多朋友说:老喜,我想学自动化,但环境都搭不起来,一报错就懵。
别慌,今天这篇纯干货。我手把手带你从零跑通第一个脚本,再把面试官最爱问的10个问题一次讲透。
我是一个笨人,也是一个懒人。我能学会,你肯定也能。
第一部分:环境搭建——从零跑通第一个脚本
01 为什么选 Python + Pytest + Selenium?
Python:语法像说话,上手极快,测试开发的第一选择
Pytest:比 unittest 灵活,支持夹具、参数化,插件生态丰富
Selenium:Web自动化的老大哥,Chrome、Firefox都能跑
这三兄弟组合,就是自动化测试的“黄金搭档”。
02 第一步:安装 Python(别漏掉勾选)
去 python.org 下载 3.8 及以上版本(推荐3.9/3.10)
安装时务必勾选 Add Python to PATH —— 这一步漏了后面全是坑
打开命令行(Win+R 输入 cmd),输入:
bash
python --version
看到版本号就成功了。如果提示“不是内部命令”,那就是PATH没加上,手动去系统环境变量里把Python和Scripts目录加进去。
03 第二步:安装 Pytest 和常用插件
bash
pip install pytestpytest --version# 验证
一次性装好增强插件,后面省事:
bash
pip install pytest-html # HTML报告pip install pytest-xdist # 多核并发pip install pytest-rerunfailures # 失败重试pip install pytest-ordering # 控制执行顺序
04 第三步:安装 Selenium 和浏览器驱动
安装 Selenium 库:
bash
pip install selenium
下载 ChromeDriver:
配置驱动(推荐第一种):
05 验证环境:跑通第一个脚本
新建 test_demo.py,复制下面代码:
python
import pytestfrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport timeclassTestBaidu:defsetup_method(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(10) self.driver.maximize_window()defteardown_method(self): self.driver.quit()deftest_baidu_search(self): self.driver.get("https://www.baidu.com") self.driver.find_element(By.ID,"kw").send_keys("自动化测试") self.driver.find_element(By.ID,"su").click() time.sleep(2)assert"自动化测试"in self.driver.titleprint("测试通过!")if __name__ =="__main__": pytest.main(["-v","test_demo.py"])在命令行执行:
bash
pytest test_demo.py -v
如果看到浏览器自动打开、搜索、关闭,并显示 PASSED,恭喜你,环境搞定!
06 几个常见坑(我踩过的)
驱动版本不匹配:ChromeDriver 必须和你电脑上的 Chrome 版本一致,差一个版本都不行。
找不到驱动:检查 chromedriver.exe 是不是在 Scripts 里,或者代码里用 Service 指定绝对路径。
“受到自动化软件控制”提示:加 Chrome 选项去掉条幅:
python
from selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_experimental_option("excludeSwitches",["enable-automation"])driver = webdriver.Chrome(options=options)
07 项目结构推荐(新手照着建)
text
project/├── tests/ # 测试用例│ ├── test_login.py│ ├── test_search.py│ └── conftest.py # fixture├── pages/ # Page Object 页面对象├── utils/ # 工具类(驱动管理、配置读取)├── reports/ # 测试报告└── requirements.txt
运行命令:
bash
pytest tests/ --html=reports/report.html # 生成报告pytest tests/ -n2# 2核并发pytest tests/ --reruns2# 失败重试2次
🤖 AI提效小贴士:以后你写UI脚本,完全可以让AI帮你生成 Selenium 或 Playwright 的骨架代码。你只需要说“用Python+Selenium写一个百度搜索的自动化脚本”,AI几秒就给你,你把定位器改一改就能跑。省下的时间,去搞懂框架设计,这才是高性价比的进阶。
第二部分:10道高频面试题,让你对答如流
环境搭好了,脚本能跑了,面试官的问题你也得接得住。下面这10个问题,个个经典,我直接把回答思路给你。
1. 你们公司的接口自动化框架是如何搭建的?
回答模板:
我们使用 Python + Requests + Pytest。
封装了 Requests 统一请求、Yaml 配置、数据驱动、PyMySQL 数据库操作
Fixture 管理登录态,Allure 生成报告
目录分层:testcases、configs、testdatas、utils、reports
用 Jenkins 做持续集成,每晚定时跑
2. 公司自动化测试的落地情况?(用例数、执行时长)
有项目经验:
“我负责的项目有30多个接口,自动化用例约300条,每次执行30分钟左右。Jenkins定时跑,失败钉钉告警,发现过参数错误、环境问题等。”
无实际项目(但自学过):
“目前公司项目变更频繁,没大面积落地。但我自己搭了demo框架,针对开源项目跑了上百条用例,熟练掌握了配置和CI。”
3. 你在框架中主要负责哪些部分?团队如何协作?
“我主要负责请求封装、关联接口处理、Yaml用例规范、日志监控,也写大量用例。
团队用Git分支开发,合并前代码评审,保证框架稳定。”
4. 已经有 Postman、JMeter,为什么还要写代码做自动化?
大中型项目接口多,代码版控更安全,可维护性高
工具容易暴露接口,代码可以封装鉴权,更安全
代码支持复杂前置/后置处理,日志灵活
方便集成CI/CD,实现全自动回归
报告更专业(Allure)
5. 接口之间如何关联(例如 token 传递)?
方法一:前一个接口 return 出 token,后面直接用。
方法二:用 Pytest fixture。定义一个 fixture 发送登录请求并 yield token,测试用例在参数中引用该 fixture 即可自动获取。
6. 框架如何实现数据驱动?
用 @pytest.mark.parametrize 装饰器,从 Excel/Yaml 读取多组数据,注入同一个测试逻辑,实现不同参数组合的覆盖。
7. 为什么要用 Yaml 作为配置文件?
Yaml 比 ini、conf 更简洁,层级清晰,支持列表、字典。数据库信息、域名、账号等放 Yaml 里,修改方便,多环境切换也简单。
8. 接口自动化测试的数据通常放在哪里?
9. 一个接口一般设计多少测试用例?怎么设计?
单接口通常20~30条:
正向:正常请求、必填参数
鉴权反例:token为空/错误/过期
参数反例:必填缺失、长度/类型/格式错误
错误码覆盖
分页边界、特殊字符等
常用方法:等价类、边界值、场景法。
10. 接口测试中如何进行数据验证?
分两块:
写在最后
今天这篇,我们从零搭好了 Python + Selenium 环境,跑通了第一个脚本,还拆解了10道高频面试题。如果你是新手,强烈建议你今天就照着做一遍。遇到报错别慌,直接复制报错信息问AI。
我是一个笨人,也是一个懒人。我能学会,你肯定也能。研究透了我才会讲,希望给你带来一点帮助。
如果你想要 环境搭建的截图版文档 + 项目模板 + AI 提效的提示词范例,扫码加我微信 AITestLaoXi,免费领取,拉你进 【测试人AI提效群】。
你那么帅,那么美,觉得有用?点个在看、分享给还在环境配置里挣扎的测试新人。