一、介绍
自动化测试是软件开发和维护中非常重要的一部分,主要目的是提高软件质量、开发效率和测试覆盖率。
提高测试效率、提升测试准确性、支持持续集成/持续交付(CI/CD)、节省长期成本、增强回归测试能力、提高测试覆盖率、提升团队协作效率。
越高级的技术,越需要动脑子
- IT--不是一个靠体力的工作
- 体力活越少,反倒你的工资越高
工具
selenium 浏览器自动化操作框架
pytest 测试用例执行和管理框架
allure-pytest 生成漂亮的Allure测试报告
selenium
提供了丰富的元素操作方法。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 1. 启动Chrome浏览器
driver = webdriver.Chrome() # 如果驱动不在PATH,需要写路径,如 webdriver.Chrome(executable_path='/path/to/chromedriver')
# 2. 打开网页
driver.get('https://www.baidu.com')
# 3. 找到输入框,输入关键词
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('自动化测试')
# 4. 模拟按回车键
search_box.send_keys(Keys.RETURN)
# 等待3秒,确保页面加载完成
time.sleep(3)
# 5. 关闭浏览器
driver.quit()
pytest-allure插件
安装 pip install allure-pytest
验证 pytest--alluredir=report
生成并查看allure报告:allure serve report
开始学习:
二、测试理论
UI:User Interface(⽤户接⼝-⽤户界⾯),主要包括:app、web
ui⾃动化测试:使⽤⼯具或代码执⾏⽤例的过程
什么样的项⽬适合做⾃动化:
- 1、需要回归测试项⽬(甲⽅⾃营项⽬、⾦融、电商)
- 2、需求变动不频繁:稳定的模块
- 3、项⽬周期⻓的项⽬:(甲⽅⾃营项⽬、6个⽉以上的外包)
⾃动化测试⽬的:提⾼测试效率
环境搭建
pthon解释器+pycharm+selenium+浏览器+浏览器驱动
pip install selenium
元素定位
id定位
- ⽅法: driver.find_element_by_id("id值")
- 前置: 标签必须有id属性
- 输⼊⽅法: 元素.send_keys("内容")
name定位
- ⽅法: driver.find_element_by_name("name属性值")
- 前置: 标签必须name属性
- 特点: 当前⻚⾯可以重复
- 提示: 由于name属性值可以重复,所以使⽤时需要查看是否为唯⼀。
class定位
- ⽅法: driver.find_element_by_class_name("class属性值")
- 前置: 标签必须有class属性
- 特点: class属性值可以有多个值
tag_name定位
- 说明:根据的标签名进⾏定位
- ⽅法: driver.find_elemet_by_tag_name("标签名")
- 提示: 如果⻚⾯存在多个相同标签,默认返回第⼀个。
ink_text定位
- 说明: 根据链接⽂本(a标签)定位
- ⽅法: driver.find_element_by_link_text("链接⽂本")
- 特点: 传⼊的链接⽂本,必须全部匹配,不能模糊
partial_link_text定位
- 说明: 根据链接⽂本(a标签)定位
- ⽅法: driver.find_element_by_partial_link_text("链接⽂本")
- 特点: 传⼊的链接⽂本,⽀持模糊匹配(传⼊局部⽂字)
扩展-查找⼀组元素
- 说明:返回列表格式,要使⽤需要添加下标或遍历。
- ⽅法: driver.find_elements_by_xxxx(),
- 提示: ⼋⼤元素定位⽅法,都可以使⽤⼀组元素定位,如果没有搜索到符合标签,返回空列表。
元素定位(xpath、css)
⽅便在⼯作⽤中查找元素,使⽤xpath和css⽐较⽅便(⽀持任意属性、层级)来找元素
xpath是xml path简称,使⽤标签路径来定位。
如百度
driver.find_element_by_xpaht("表达式")
如百度'//*[@id="kw"]'

案例:

css选择器

三、PO模式
Page Object 模式是将页面元素和操作封装为类,使测试代码更清晰、易维护。
Base层、Page层、Script层
base: 封装每个页面中相同的属性和方法 比如:元素定位、输入、点击
pageobject:每个页面定义一个类,类中包含元素及操作元素的方法
testcase:包含业务及测试数据
流程大概是
case_script/test_login.py
↓
business/login_business.py
↓
page/login_page.py
↓
base/base_page.py
↓
浏览器页面
-
run.py启动自动化测试 -
用例在
case_script/中调用business/ -
business/调用page/的操作方法 -
页面方法继承自
base/ -
运行中生成日志和报告(
logs/和case_report/)
使用markers标记测试用例
在 pytest 中,markers 是一种非常有用的功能,它可以对测试用例进行标记,以便实现更灵活的测试执行和分组等操作。

pytest中添加Fixture(测试夹具)
在介绍装饰器格式的Fixture前,先介绍conftest。
Conftest它是pytest的一个组件,用于配置测试环境和参数。
因此,conftest.py 文件是存放测试夹具(Fixtures)的理想场所。
测试夹具就像是测试用例执行时的得力助手,能够为测试提供各种必要的资源,如数据、对象、环境等。
通过在 conftest.py 中定义测试夹具,我们可以在多个测试模块中轻松地共享和复用这些资源,避免了在每个测试文件中重复编写相同
- 运行测试之前,pytest会自动识别并执行conftest.py文件中的配置。
运行测试之前,pytest 会默认读取 conftest.py里面的所有 fixture
conftest.py 文件名称是固定的,不能改动
conftest.py 只对同一个 package 下的所有测试用例生效
不同目录可以有自己的 conftest.py,一个项目中可以有多个 conftest.py
测试用例文件中不需要手动 import conftest.py,pytest 会自动查找
pytest中的fixtrue装饰器
我们可以在conftest.py中,或者是测试模块中定义fixtrue装饰器。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://blog.grover.top/2025/05/26/%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95/
共有 0 条评论