当前位置: 首页 > news >正文

AI+软件测试第二篇0616

350.注册页面测试脚本

前后置方法名是固定的

toast提示

时间很短,而且不是源代码里的,显示一秒钟就消失,抓不到不好抓。

如果抓不到这个提示,直接定位当前页面的元素即可,比如说即便注册后仍然可以找到”注册抢88现金“意味着登陆失败

page_register.py:封装页面的方法

1.初始化方法,放属性(页面元素定位的属性)

2.方法:打开浏览器,业务方法(登陆注册),成功方法,失败方法

test_02_register.py:测试脚本

1.前置后置

2.测试用例(成功/失败)

351.开通资金托管页面封装

正向业务与逆向业务:
维度正向业务逆向业务
关注点功能的可用性与正确性系统的健壮性与安全性
输入数据合法、标准数据非法、边界、异常数据
预期行为顺利执行,返回成功优雅降级,准确报错,拒绝非法操作
测试占比通常占 30%~40%通常占 60%~70%(Bug往往藏在逆向中)
思维模式顺向思维(按说明书操作)逆向/破坏性思维(找茬、挑刺)

这是正向业务

UI自动化就是对版本进行回归测试,回归测试是正向的。自动化测试很少做逆向的,回归测试全是正向业务

写代码思路

从page开始写

元组的括号可以不写,但要保证“,”在

352.开通资金托管账号测试

353.faker工具介绍

354.faker应用演示

355.数据驱动介绍

数据驱动

通过批量数据测一个独立的功能

步骤

1.构造数据-->2.读取数据-->3.参数化调用

1.构造数据(json)
[ { "user_id": 1001, "name": "张三" }, { "user_id": 1002, "name": "李四" } ]

每一个花括号代表一条测试用例

可以把测试数据构造出json文件然后读取内容变成字典

2.读取数据

3.参数化调用

356.数据驱动演示

1.构造数据

数据应该放在data中

json文件里面的键值必须是双引号引起来的,json中的引号必须是双引号不能用单引号

[ { "phone":"13800001001", "password":"Aa123456", "expect":"13800001001" }, { "phone":"13800001001", "password":"123456", "expect":"密码错误" }, { "phone":"13800008001", "password":"Aa123456", "expect":"不存在" }, { "phone":"13800008001", "password":"", "expect":"不能为空" } ]
2.读取数据
def read_json(file_name): """ 读取JSON文件并转换为格式为 [(), (), ...] 的列表 :param file_name: json文件名 :return: 列表 """ data = [] file_path = PATH + "/data/" + file_name with open(file_path, mode='r', encoding='utf-8') as f: # 读取JSON文件并解析为Python对象 tmp = json.load(f) for i in tmp: a = tuple(i.values()) data.append(a) # 返回列表 return data
3.实现参数化
import pytest from page.page_login import PageLogin from script import log from tools import DriverTools, read_json class TestLogin: def setup_method(self): """前置方法""" # 准备数据 driver = DriverTools.get_driver() self.page_login = PageLogin(driver) # 调用方法 self.page_login.open_url() def teardown_method(self): """后置方法""" DriverTools.quit_driver() @pytest.mark.parametrize("phone,password,expect", read_json("login_data.json")) def test_01_login(self, phone, password, expect): # 准备数据 try: # 调用方法 self.page_login.login(phone, password) # 获取结果 if expect == phone: result = self.page_login.get_success_result() else: result = self.page_login.get_fail_result() # 打印日志 log.debug(f"登录结果: {result} | 期望值: {expect}") # 断言 assert expect == result except Exception as e: log.error(f"测试执行过程中发生异常: {e}") raise

357.登录功能的参数化

358.额度申请页面封装

#######################page_credit_application.py########################## from selenium.webdriver.common.by import By from base.base import BasePage class PageCreditApplication(BasePage): """额度申请页面""" def __init__(self,driver): """设置属性""" super().__init__(driver) # 页面元素定位信息 self.role = (By.XPATH, "//em[text()='借款账户']") self.application = (By.LINK_TEXT, "申请额度") self.money = (By.ID, "amount_account") self.detail = (By.NAME, "remark") self.code = (By.ID, "verifycode") self.submit = (By.CSS_SELECTOR, ".btn-submit.btn-md") # 提交成功结果 #amount_list > tr:nth-child(1) > td:nth-child(3) self.success_result = (By.CSS_SELECTOR, "#amount_list> tr.ng-scope > td:nth-child(3)") def switch_role(self): """点击切换账户""" self.base_click(self.role) def click_application(self): """点击额度申请""" self.base_click(self.application) def credit_application(self,money, detail, code): """ 额度申请提交 :param money: 金额 :param detail: 详情 :param code: 验证码 :return: 无 """ # 输入信息 self.base_input(self.money, money) self.base_input(self.detail, detail) self.base_input(self.code, code) # 点击提交 self.base_click(self.submit) def get_success_result(self): """获取提交成功结果""" return self.fd_element(self.success_result).text

359.额度申请页面测试

1.pytest框架无需继承,直接拿过来用

2.驱动什么时候前面加self什么时候不加?当前方法内直接用无需加,别的方法也要用就需要加self

360.web自动化_day03总结

目标

完成项目核心业务web自动化脚本编写

项目封装
web自动化框架:

python+selenium+po+pytest

架构搭建(结构):
base层:

封装页面的公共操作(按照面向对象思想封装页面对象的公共方法)

page层:

按PO模式封装页面对象(把页面元素定位和页面操作放到这个里面)

实例属性:页面元素定位

实例方法:页面基本操作

多步可以拆分不同的方法(一个操作一个方法最好)

script层:

基于pytest框架封装测试用例/脚本

前后置处理

方法级别

setup_method()

teardown_method()

类级别

setup_class()

teardown_class()

测试用例

1.准备数据/创建对象

2.调用方法

3.打印结果日志记录

4.断言结果

data层

存放参数化使用的json数据,也可以存放excel数据(此时tools里应该换成读取excel的方法)

report层
log层

存放测试执行过程的日志信息

pytest.ini

pytest的配置文件,批量用例处理

config.py

项目配置文件

项目地址

项目URL

...

tools.py

通用工具

浏览器驱动

日志管理

读取json数据

数据驱动
定义

以测试数据(批量数据)驱动脚本执行,是一种自动化的设计模式

应用场景

单模块/页面的批量数据(覆盖不同场景)执行

如何实现

封装思路

http://www.gsyq.cn/news/1544339.html

相关文章:

  • 2026 昆明卫生间漏水怎么处理?墙面发潮脱皮,楼下漏水,卫生间漏水免砸砖专业防水公司推荐 (2026 年 6 月昆明最新深度调研方案) - 防水资讯
  • 2026 银川卫生间漏水怎么处理?墙面发潮脱皮,楼下漏水,卫生间漏水免砸砖专业防水公司推荐 (2026 年 6 月银川最新深度调研方案) - 防水资讯
  • Java毕设项目: 基于 Spring Boot 的房屋资源交易数据管理系统的设计与实现 基于 Spring Boot 的房产交易咨询与售后管理系统(源码+文档,讲解、调试运行,定制等)
  • 2026 宁波专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月宁波最新深度调研方案) - 防水资讯
  • 中山便利店加盟优选深度解析:本土深耕二十年,合家欢为何适配大湾区创业市场 - GrowthUME
  • 2026 武汉卫生间漏水怎么处理?墙面发潮脱皮,楼下漏水,卫生间漏水免砸砖专业防水公司推荐 (2026 年 6 月武汉最新深度调研方案) - 防水资讯
  • Python HTTP请求安全:中间人攻击原理与防御实战指南
  • 2026 天津专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月天津最新深度调研方案) - 防水资讯
  • 2026 合肥专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月合肥最新深度调研方案) - 防水资讯
  • 2026 青岛卫生间漏水怎么处理?墙面发潮脱皮,楼下漏水,卫生间漏水免砸砖专业防水公司推荐 (2026 年 6 月青岛最新深度调研方案) - 防水资讯
  • 2026年最新攻略:英语听力训练平台怎么选才靠谱不踩坑
  • 2026 青岛专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月青岛最新深度调研方案) - 防水资讯
  • 2026 西宁卫生间漏水怎么处理?墙面发潮脱皮,楼下漏水,卫生间漏水免砸砖专业防水公司推荐 (2026 年 6 月西宁最新深度调研方案) - 防水资讯
  • 5分钟上手仲景AI:中医大语言模型快速入门指南
  • IEC 60730安全库实战:CPU、堆栈与TSI触摸接口的嵌入式自检
  • 8大网盘直链下载终极指南:告别限速烦恼,一键获取真实下载地址
  • 2026 重庆专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月重庆最新深度调研方案) - 防水资讯
  • 2026 杭州专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月杭州最新深度调研方案) - 防水资讯
  • 开源音乐聚合工具终极指南:一键获取全网高品质音乐
  • 【实用工具】用Python将Excel表格数据一键导入MySQL数据库
  • 深入解析Freescale 56F826/827 DSP:从哈佛架构到电机FOC控制实战
  • 2026年 南通中式别墅策划公司推荐榜:匠心造园与东方雅韵设计哪家强?避坑指南 - 品牌发掘
  • 2026 石家庄专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月石家庄最新深度调研方案) - 防水资讯
  • 终极电视游戏串流指南:如何用Moonlight TV将PC游戏搬上大屏幕
  • 2026 福州专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月福州最新深度调研方案) - 防水资讯
  • 高效配置方案:BetterJoy 5大专业策略深度解析
  • 抖音视频下载全攻略:douyin-downloader助你轻松保存无水印内容
  • 2026 东莞专业防水公司 TOP5 口碑推荐:卫生间、外墙、楼顶、地下室渗漏专业公司推荐 (2026 年 6 月东莞最新深度调研方案) - 防水资讯
  • 2026年云南地区目标冲刺九大知名美院的高三美术生集训机构头部推荐 - 云南美术头条
  • 2026专业GEO排名查询监测工具评测:AI收录查询与排名优化全方案