自动化测试

Ryder 2025-5-26 13 5/26

一、介绍

自动化测试是软件开发和维护中非常重要的一部分,主要目的是提高软件质量、开发效率和测试覆盖率。

提高测试效率、提升测试准确性、支持持续集成/持续交付(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(),
  • 提示: ⼋⼤元素定位⽅法,都可以使⽤⼀组元素定位,如果没有搜索到符合标签,返回空列表。

元素定位(xpathcss

⽅便在⼯作⽤中查找元素,使⽤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装饰器。

 

 

 

 

 

 

 

 

 

 

- THE END -

Ryder

6月03日10:37

最后修改:2025年6月3日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论