今天给大家带来一篇纯干货教程,保证小白也能看懂学会!
最近很多朋友在问:“二黑,我想学自动化测试,但环境都搭不起来,老是报错怎么办?”别担心,今天我就手把手教你搭建Python+Pytest+Selenium自动化测试环境,从安装到第一个脚本运行,每个步骤都配了详细的截图,跟着做绝对没问题!
01 为什么要选这个技术栈?
先简单说说为什么推荐这个组合:
Python:语法简单,上手快,社区资源丰富,绝对是自动化测试的首选语言
Pytest:比unittest更强大、更灵活的测试框架,插件多,写法简单
Selenium:Web自动化测试的老大哥,支持多种浏览器,功能强大
这三个加起来,简直就是自动化测试的“黄金组合”!
02 环境搭建详细步骤
好了,废话不多说,我们直接进入正题!
第一步:安装Python
Python是我们的基础,必须首先安装。
1. 下载Python
访问Python官网:https://www.python.org/downloads/
https://img-blog.csdnimg.cn/direct/1234567890abcdef.png
Python官网下载页面
建议下载Python 3.8及以上版本,我这里以Python 3.9为例。记得要勾选"Add Python to PATH"!
2. 验证安装
安装完成后,打开命令行(Win+R,输入cmd),输入:
python --version
如果显示Python版本号,说明安装成功!
https://img-blog.csdnimg.cn/direct/1234567890abcdef.png
验证Python安装
遇到问题怎么办?
如果提示"python不是内部或外部命令",说明环境变量没配置好。手动添加一下:
-
右键"此电脑"→"属性"→"高级系统设置"→"环境变量"
-
在系统变量中找到Path,双击编辑
-
添加Python的安装路径和Scripts路径,比如:
C:\Python39\C:\Python39\Scripts\
第二步:安装Pytest
Pytest是我们的测试框架,安装超简单。
1. 使用pip安装
在命令行中输入:
pip install pytest
2. 验证安装
安装完成后,输入:
pytest --version
会显示pytest的版本信息,这样就OK了!
3. 安装常用插件
为了后面用着更方便,我们可以一次性安装几个常用插件:
pip install pytest-html # 生成HTML报告pip install pytest-xdist # 分布式测试pip install pytest-rerunfailures # 失败重试pip install pytest-ordering # 控制用例执行顺序
第三步:安装Selenium
Selenium是重头戏,用来控制浏览器进行自动化测试。
1. 安装Selenium库
在命令行中输入:
pip install selenium
2. 下载浏览器驱动
Selenium需要浏览器驱动才能工作,以Chrome为例:
-
查看Chrome版本:在浏览器地址栏输入
chrome://version/ -
访问ChromeDriver官网:https://chromedriver.chromium.org/
-
下载对应版本的驱动
https://img-blog.csdnimg.cn/direct/1234567890abcdef.png
ChromeDriver下载页面
3. 配置浏览器驱动
有三种配置方法,推荐第一种:
方法一:放到Python安装目录下
直接把下载的chromedriver.exe放到Python的Scripts目录下,这样最简单。
方法二:配置环境变量
把chromedriver所在目录添加到系统Path环境变量中。
方法三:代码中指定路径
在代码中指定驱动路径(后面会演示)。
03 验证环境是否成功
环境装好了,我们来写个简单的测试脚本验证一下。
创建一个名为test_demo.py的文件,输入以下代码:
import pytestfrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport timeclassTestBaidu:"""百度搜索测试用例"""defsetup_method(self):"""每个测试方法前执行"""# 创建浏览器驱动self.driver = webdriver.Chrome() # 如果驱动在PATH中,可以直接这样写self.driver.implicitly_wait(10) # 隐式等待10秒self.driver.maximize_window() # 最大化窗口defteardown_method(self):"""每个测试方法后执行"""# 关闭浏览器self.driver.quit()deftest_baidu_search(self):"""测试百度搜索功能"""# 打开百度self.driver.get("https://www.baidu.com")# 定位搜索框并输入关键词search_box = self.driver.find_element(By.ID, "kw")search_box.send_keys("自动化测试")# 定位搜索按钮并点击search_btn = self.driver.find_element(By.ID, "su")search_btn.click()# 验证搜索结果time.sleep(2) # 等待页面加载assert"自动化测试"in self.driver.titleprint("测试通过!")if __name__ == "__main__":pytest.main(["-v", "test_demo.py"])
保存文件,在命令行中运行:
pytest test_demo.py -v
如果看到浏览器自动打开,完成搜索操作然后关闭,并且命令行显示测试通过,恭喜你,环境搭建成功!
https://img-blog.csdnimg.cn/direct/1234567890abcdef.png
测试运行结果
04 常见问题及解决方案
大家在搭建环境时可能会遇到一些问题,这里整理了几个常见的:
问题一:浏览器驱动版本不匹配
现象:报错提示"This version of ChromeDriver only supports Chrome version XX"
解决:确保ChromeDriver版本与Chrome浏览器版本匹配,最好都使用最新版。
问题二:找不到浏览器驱动
现象:报错提示"WebDriver exception: 'chromedriver' executable needs to be in PATH"
解决:
-
检查chromedriver是否在Python的Scripts目录下
-
或者在代码中指定驱动路径:
from selenium.webdriver.chrome.service import Serviceservice = Service(r"C:\path\to\chromedriver.exe")driver = webdriver.Chrome(service=service)
问题三:浏览器被安全策略阻止
现象:浏览器启动时提示"受到自动化软件控制"
解决:添加选项绕过这个提示:
from selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(options=options)
05 进阶配置:让框架更好用
基础环境搭好了,我们再配置一些实用的功能。
1. 生成测试报告
安装pytest-html后,可以生成漂亮的HTML报告:
pytest test_demo.py --html=report.html
2. 并发执行测试
安装pytest-xdist后,可以并行运行测试用例,大大提高执行速度:
pytest test_demo.py -n 2 # 使用2个CPU核心
3. 失败重试
安装pytest-rerunfailures后,可以让失败的用例自动重试:
pytest test_demo.py --reruns 2 # 失败重试2次
06 项目结构规划
一个良好的项目结构很重要,推荐这样组织你的自动化项目:
project_name/├── tests/ # 测试用例目录│ ├── test_login.py # 登录测试│ ├── test_search.py # 搜索测试│ └── conftest.py # pytest配置文件├── pages/ # 页面对象目录│ ├── login_page.py # 登录页面│ └── search_page.py # 搜索页面├── utils/ # 工具类目录│ ├── driver_manager.py # 浏览器管理│ └── config_reader.py # 配置读取├── reports/ # 测试报告目录├── logs/ # 日志目录└── requirements.txt # 依赖包列表
07 编写一个完整的测试用例
让我们写一个更完整的例子,使用页面对象模式:
1. 首先创建页面类pages/baidu_page.py:
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECclassBaiduPage:def__init__(self, driver):self.driver = driverself.wait = WebDriverWait(driver, 10)defopen_baidu(self):"""打开百度首页"""self.driver.get("https://www.baidu.com")return selfdefsearch(self, keyword):"""执行搜索"""# 等待搜索框可见search_box = self.wait.until(EC.visibility_of_element_located((By.ID, "kw")))search_box.clear()search_box.send_keys(keyword)# 点击搜索按钮search_btn = self.driver.find_element(By.ID, "su")search_btn.click()return selfdefget_title(self):"""获取页面标题"""return self.driver.title
2. 然后创建测试用例tests/test_baidu_search.py:
import pytestfrom pages.baidu_page import BaiduPageclassTestBaiduSearch:"""百度搜索测试类"""@pytest.fixture(autouse=True)defsetup(self, driver):"""初始化"""self.driver = driverself.baidu_page = BaiduPage(driver)deftest_search_python(self):"""测试搜索Python"""self.baidu_page.open_baidu().search("Python教程")assert"Python教程"in self.baidu_page.get_title()deftest_search_automation(self):"""测试搜索自动化测试"""self.baidu_page.open_baidu().search("自动化测试")assert"自动化测试"in self.baidu_page.get_title()
3. 创建配置文件tests/conftest.py:
import pytestfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.chrome.options import Optionsdefdriver():"""创建浏览器驱动,整个测试会话只执行一次"""# 配置Chrome选项chrome_options = Options()chrome_options.add_argument("--disable-blink-features=AutomationControlled")chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])# 创建驱动实例driver = webdriver.Chrome(options=chrome_options)driver.implicitly_wait(10)driver.maximize_window()yield driver# 测试结束后关闭浏览器driver.quit()
运行测试:
pytest tests/test_baidu_search.py -v --html=reports/report.html
08 学习建议和下一步
环境搭好了,接下来该怎么学?给大家几点建议:
1. 先掌握基础知识
-
Python基础语法
-
Selenium常用API(元素定位、页面操作等)
-
Pytest断言和夹具使用
2. 然后学习进阶内容
-
页面对象模式(Page Object Model)
-
数据驱动测试
-
测试报告优化
-
持续集成
3. 实战项目练习
-
找一个熟悉的网站进行自动化练习
-
从简单的登录、搜索功能开始
-
逐步扩展到复杂业务流程
09 总结
好了,今天的内容就到这里。我们完整地走了一遍Python+Pytest+Selenium环境搭建的过程,包括:
-
✅ Python安装和配置
-
✅ Pytest安装和插件配置
-
✅ Selenium安装和驱动配置
-
✅ 第一个自动化脚本编写和运行
-
✅ 常见问题解决
-
✅ 项目结构规划
-
✅ 完整测试用例示例
环境搭建是自动化测试的第一步,也是很多新手容易卡住的地方。希望这篇教程能帮你顺利迈出第一步!
如果在搭建过程中遇到什么问题,欢迎在评论区留言,我会尽力帮大家解决!
本文原创于【程序员二黑】公众号,转载请注明出处!
欢迎大家关注笔者的公众号:程序员二黑,专注于软件测试干活分享,全套测试资源可免费分享!
最后如果你想学习软件测试,欢迎加入笔者的交流群:946094265,里面会有很多资源和大佬答疑解惑,我们一起交流一起学习!