首页/新闻资讯/正文详情

squish6.3自动化代码用例编写

发布时间:2026/11/3 2:49:27 来源:云帆数科 栏目:资讯中心
squish6.3自动化代码用例编写
一、 用例函数之 init() 和 cleanup()附加模式下 一定要注意用例结束后的恢复工作否则会造成后续用例失败squish中默认提供了init和cleanup函数init()方法失败main()方法不执行cleanup()方法会执行 main()方法失败cleanup()方法会执行由此可见无论初始化和main函数是否成功cleanup()都会执行所以如果cleanup的操作是清理测试过程中产生的数据而init和main很可能根本不会生成数据成功cleanup的实现就需要兼容我建议采用数据库清理、界面刷新操作来保障二、数据库连接对于squish6.3内置python2.7而言安装python三方库着实废一些功夫1、pgsql连接尝试使用pg8000库tar-xzvf pg8000-1.10.5.tar.gz cd pg8000-1.10.5/cp-r pg8000-1.10.5/pg8000{squish安装目录}/python/lib/python2.7/site-packages# 根据运行case报错问题拷贝_hashlib.socd{squish安装目录}/python/lib/python2.7/lib-dynload cp/usr/lib64/python2.7/lib-dynload/_hashlib.so./# 根据运行case报错问题拷贝sixcd{squish安装目录}/python/lib/python2.7/site-packages cp/usr/lib/python2.7/site-packages/six.py./cp/usr/lib/python2.7/site-packages/six.pyc./运行case提示Fail Authentication method 10 not recognized by pg8000.是因为 pg8000 驱动版本太旧不支持 PostgreSQL 14 默认的 scram-sha-256 (认证代码10) 认证方式。AI要我升级 pg8000 1.16.5 或 1.15.3但注意 1.13.0 版本pg8000 不支持 Python 2.7遂放弃。尝试使用psycopg2库psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_x86_64.whl#官网下载psycopg2-binary包unzip psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_x86_64.whl-d解压目录cp 目录名/*{squish安装目录}/python/lib/python2.7/site-packages/运行case依然提示Fail Authentication method 10的错误从psycopg2.7.5-》psycopg2.8.0-》psycopg2.8.6都是这个错误最终通过修改pgsql服务器配置解决并不是所有项目都允许修改这个配置有条件还是升级python版本数据库服务端修改配置ALTER SYSTEM SET password_encryptionmd5;SELECT pg_reload_conf();ALTER ROLE{你的用户名}WITH PASSWORD密码;SELECT pg_reload_conf();# -*- coding: utf-8 -*-importpsycopg2 test.log(str(psycopg2.__file__))#{squish安装目录}/python/lib/python2.7/site-packages/psycopg2/__init__.pyctest.log(str(psycopg2.__version__))# 2.8.6test.log(str(psycopg2.__libpq_version__))# 110005test.log(psycopg2 import succ)defmain():connNonecursorNonetry:connpsycopg2.connect(hostxxx,port5432,databasedb,useruser,passwordpassword)cursorconn.cursor()cursor.execute(select * from Table where Field 100027)resultscursor.fetchall()test.log(succ)test.log(str(results))exceptExceptionase:test.fail(str(e))finally:ifcursor:cursor.close()ifconn:conn.close()# 如果运行报错找不到库文件就把上面的解压包中的libs目录添加到LD_LIBRARY_PATH中 export LD_LIBRARY_PATH{解压目录}/psycopg2_binary.libs:$LD_LIBRARY_PATH2、oracle连接cx_Oracle-7.3.0-cp27-cp27mu-manylinux1_x86_64.wfl # 官网下载这个包改为.zip将解压后的cx_Oracle.so拷贝到{squish安装目录}/python/lib/python2.7/site-packages/ # 此外还需下载oracle 11g对应的Instant Client不再赘述# -*- coding: utf-8 -*-importcx_Oracle test.log(str(cx_Oracle.clientversion()))# (11, 2, 0, 2, 0)defmain():dsncx_Oracle.makedsn(ip,port,service_name{database})connectioncx_Oracle.connect(user,password,dsn)cursorconnection.cursor()cursor.execute(xxx)resultscursor.fetchall()test.log(succ)test.log(str(results))cursor.close()connection.close()三、公共方法1、全局window-Show View-Other-Squish Test-Global Scripts创建全局脚本目录创建全局python文件可以将数据库连接这种各个测试套都需要共享的方法写入global scripts中在testcase文件中顶部引入就可以直接使用python文件中的方法或类了。source(findFile(scripts,base_method.py))2、测试套内测试套目录下可以mkdir -p shared/scripts创建shared目录这样在ide中创建python文件时会自动生成在此用于封装一些测试套内公用的方法source(findFile(scripts,widget.py))四、问题定位记录刚编写自动化代码时遇到的小问题如果能给大家带来帮助和思路就很不错了~~问题一测试中遇到一个表格控件的表头怎么右击都无法弹出右键菜单# 程序代码horizontalHeader()-setContextMenuPolicy(Qt::CustomContextMenu);verticalHeader()-setContextMenuPolicy(Qt::CustomContextMenu);connect(verticalHeader(),SIGNAL(customContextMenuRequested(const QPoint)),this,SL0T(ExecContextMenuVHeaderView(const QPoint)));父级{container:PaiWindow_PunitParameterEditVieworientation1typeQHeaderViewunnamed1visible1}内层{container:_QHeaderViewtextPUNITtypeHeaderViewItemvisibletrue}自动录制的代码中控件使用的是内层HeaderViewItem一直不生效尝试换成QHeaderView# 方式1openContextMenu(waitForObject(:_QHeaderView),200,10,0)# 失败# 方式2mouseClick(waitForObject(:_QHeaderView),200,10,0,Qt.RightButton)# 失败# 方式3坐标位置都是正确的objwaitForObject(:_QHeaderView)sendEvent(QContextMenuEvent,waitForObject(:_QHeaderView),0,400,10,0)# 失败# 方式4centerget_center_point(waitForObject(:_QHeaderView))nativeMouseClick(center.x-300,center.y,Qt.RightButton)# 失败# 方式5 MouseButton也失败改为Qt.RightButton成功nativeMouseClick(waitForObject(:_QHeaderView),200,10,0,Qt.RightButton)# 成功方式4是把坐标交给操作系统后事件落到哪个窗口Squish 控制不了。它只是“在屏幕这个点按了一下右键”至于这一下被谁接住取决于当时屏幕上那个位置最顶层的窗口是谁。而方式5参数形式Squish 知道目标是 _QHeaderView它会确保事件最终作用到这个控件上。问题二一个QTableWidget下有多个QModelIndex我需要鼠标左键按下滑动选择多个QModelIndex一开始我从QModelIndex单击开始使用mouseDrag方法滑动选择区域但是无论参数怎么填写依然报重载问题错误如下Detail SyntaxError: Ambiguous overload mouseDrag(Object, int, int, int, int, int, int). Candidates: Squish::Global::mouseDrag(QWidget * source, int x, int y, int dx, int dy, int state, Qt::MouseButton button) Squish::Global::mouseDrag(char * object, int x, int y, int dx, int dy, int modifiers, Qt::MouseButton button) Squish::Global::mouseDrag(QQuickItem * object, int x, int y, int dx, int dy, int modifiers, Qt::MouseButton button) Squish::Global::mouseDrag(QWindow * object, int x, int y, int dx, int dy, int modifiers, Qt::MouseButton button)Ambiguous overload 这个错误根源在于函数重载时无法区分用哪个。QModelIndex 本身不是任何控件QWidget不占据屏幕空间也不接收鼠标事件。把一个 QModelIndex 类型的对象传进去Squish 底层无法完成类型转换。所以要模拟鼠标拖拽必须直接对 QTableWidget 控件本身进行操作因为只有它才是一个真实的、可交互的 QWidget。✅ 正确路径操作其容器 QTableWidgetitemwaitForObject({containerxxx typeQTableWidget unnamed1 visible1})mouseDrag(item,52,280,0,60,0,Qt.LeftButton)# 52280是控件内部开始拖拽的相对坐标060是滑动的相对坐标通过以上2个例子可见调用操作方法时使用哪种type类型的控件去操作很重要如果一直行不通可尝试返回上一级的控件去操作而且有些属性也是需要上一层才能获取或者操作行为上变通下。

相关推荐

【元宝搜索开发者征文大赛】少点幻觉,多点搜索:我做了个政策过期检测器
【元宝搜索开发者征文大赛】少点幻觉,多点搜索:我做了个政策过期检测器

目录 前言 1 起因:AI 拿着一份过期三年的补贴政策,差点让他报错材料 2 为什么治「政策幻觉」,非得用元宝搜索不可 3 先把钥匙拿到手:元宝搜索 API Key 开通全流程 3.1 开通服务,把版本选对 3.2 先用 curl 打通一… · 2026/11/3 2:49:27

大模型小白必看:收藏这份AI Agent底层逻辑解析,轻松上手构建智能应用
大模型小白必看:收藏这份AI Agent底层逻辑解析,轻松上手构建智能应用

本文深入解析AI Agent的核心运作机制,揭示其本质为“调用工具的循环系统”。文章详细拆解了Agent的四大核心组件:Loop循环机制、Tools工具调用能力、Memory记忆模块以及Harness调度管控模块,并阐述了它们如何协同工作以实现智能任务执行。通过… · 2026/11/3 2:49:27

从0开始学架构-结束语:坚持,成就你的技术梦想
从0开始学架构-结束语:坚持,成就你的技术梦想

“从0开始学架构”专栏历经4个月的时间,现在到了跟你说再见的时候了。一路走来,非常感谢你的坚持。看到专栏的内容能够帮助你理解架构设计这个看起来高大上的技术,我非常欣慰,也算完成了自己3年前的一个心愿:帮助更多同学更快更好地掌握架构设计的技术。 专栏的结束意味着… · 2026/11/3 2:48:27

智慧街道系统:数据整合与AI驱动的基层治理新范式
智慧街道系统:数据整合与AI驱动的基层治理新范式

1. 奥尔特云智慧街道的基层治理新范式最近在基层治理领域,一个名为"奥尔特云智慧街道"的项目引起了广泛关注。这个项目最吸引我的地方在于它提出的"一张图指挥"理念——通过整合各类城市管理数据,将原本分散在十几个部门的街道治理信… · 2026/11/3 3:26:34

GMI Cloud与英伟达合作解析:Dynamo 1.0与OpenShell的技术突破
GMI Cloud与英伟达合作解析:Dynamo 1.0与OpenShell的技术突破

1. GMI Cloud与英伟达深度合作的技术背景当GMI Cloud出现在英伟达Dynamo 1.0和OpenShell的首发合作伙伴名单时,这个组合立即引起了技术圈的广泛关注。作为长期深耕云计算基础设施的服务商,GMI Cloud此次与AI计算巨头的联手,实际上揭示了当前A… · 2026/11/3 3:26:33

ZLibrary反爬机制解析与爬虫对抗策略
ZLibrary反爬机制解析与爬虫对抗策略

1. 为什么我们需要研究ZLibrary的反爬机制作为一名爬虫工程师,我最近花了三周时间系统研究了ZLibrary的反爬系统。这个全球知名的电子书平台的反爬策略堪称教科书级别——它不像某些网站简单粗暴地封IP,而是构建了一套精密的"行为特征识别动态防御&… · 2026/11/3 3:26:33

前端自动化测试利器Cypress实战指南
前端自动化测试利器Cypress实战指南

1. 为什么前端开发者需要掌握Cypress?三年前我刚加入现在的团队时,前端测试还停留在手动刷新页面肉眼检查的阶段。直到某个周五下午,我们上线了一个看似简单的表单优化,结果周末客服电话被打爆——提交按钮在Safari上完全失效。这… · 2026/11/3 3:26:33

产品数据通告撰写指南:从技术规范到用户信任
产品数据通告撰写指南:从技术规范到用户信任

1. 项目概述"浔川社团关于产品数据情况的官方通告"这个标题背后,反映的是一个组织对其产品数据状况进行正式披露的规范化流程。作为从业十余年的数据分析师,我见过太多组织在数据披露环节踩过的坑——要么过于技术化让普通用户看不懂&#xff… · 2026/11/3 3:26:33

Excel日期格式不生效?文本型日期批量转换与排错指南
Excel日期格式不生效?文本型日期批量转换与排错指南

前两天有人抱着一份从业务系统导出的台账来找我,说 Excel 里明明把单元格格式设成了日期,数据却纹丝不动,只有挨个双击再回车才会变成日期样子,几千行总不能一行行点下去。这个场景我这些年遇到过太多次,Excel 设置单元… · 2026/11/3 3:25:33

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码