Squish中文网站 > 热门推荐 > squish脚本执行为什么报错 squish脚本依赖应怎样检查
教程中心分类
squish脚本执行为什么报错 squish脚本依赖应怎样检查
发布时间:2025/12/30 15:12:30

  Squish脚本一跑就报错,很多人第一反应是脚本写坏了,但现场更常见的是运行环境与依赖口径不一致,例如IDE能跑、到CI就挂,或本机能跑、换一台就报ModuleNotFoundError。把报错类型与依赖链条拆开检查,往往比反复重录或反复改脚本更省时间,也更容易把问题一次压住。

  一、squish脚本执行为什么报错

 

  1、脚本引擎与脚本语言不匹配

 

  先在用例目录确认脚本文件后缀是否与套件脚本语言一致,例如Python套件却在用例里放了js文件会直接报解析或加载错误,检查路径为在Squish IDE选中测试套件后打开【Test Suite Settings】确认脚本语言口径与用例文件一致。

 

  2、同一用例在不同启动方式下环境不同

 

  IDE里点击【Run】与命令行用squishrunner运行时,脚本运行环境与AUT运行环境并不等同,环境变量分成脚本侧与AUT侧两套口径,导致依赖在一种方式下可见、另一种方式下不可见,先把差异当成排查入口会更快。

 

  3、Mapped AUT映射到错误可执行文件

 

  当机器上存在同名不同路径的可执行文件时,Squish server可能启动了另一份AUT,脚本里对象路径与行为都会对不上,甚至直接报启动失败或附加失败,在IDE点击【Edit】→【Server Settings】→【Manage AUTs】核对【Mapped AUTs】是否指向当前要测的那份程序。

 

  4、AUT启动参数或依赖库缺失导致脚本连带失败

 

  AUT没启动起来时,脚本常见表现是startApplication报错或后续attach失败,尤其在Linux上动态库路径没继承时更明显,优先在【Test Suite Settings】→【AUT Environment】补齐所需环境变量,而不是先去改脚本逻辑。

 

  5、对象库与共享脚本加载顺序变化引发运行期异常

 

  脚本里source或import了共享脚本,但路径搜索顺序在不同机器不同配置下不一致,会出现找不到文件或导入到旧版本脚本的情况,先把共享脚本与全局脚本的存放位置核对清楚再继续定位。

 

  二、squish脚本依赖应怎样检查

 

  1、先把报错归类到依赖层面再动手

 

  在Test Log里确认是ModuleNotFoundError与ImportError这类依赖错误,还是对象识别类错误或业务断言失败,依赖错误优先查解释器与搜索路径,避免把时间浪费在对象重录上。

 

  2、核对Squish当前使用的Python解释器口径

 

  如果脚本语言是Python,先确认Squish到底在用内置Python还是外部Python,在命令行用squishconfig配置外部解释器后,再回到IDE重启并复测,确保解释器切换已经生效。

 

  3、核对依赖包安装位置是否落在该解释器环境里

 

  同一台机器可能装了多个Python,包安装到系统Python但Squish仍在用另一套解释器时就会报找不到模块,做法是用与Squish一致的解释器安装依赖,再回到用例重跑确认模块可被导入。

  4、核对Shared Scripts与Global Scripts是否被正确搜索到

 

  如果依赖是自研公共库,先在套件里建【Shared Scripts】或在IDE的【Global Scripts】里确认脚本文件存在,再按Squish的搜索顺序核对是否能被findFile与source定位,重点检查paths.ini里的GlobalScriptDirs与环境变量SQUISH_SCRIPT_DIR是否把目录漏掉。

 

  5、核对Java与JVM类依赖的CLASSPATH配置

 

  如果是Java相关测试或脚本需要加载Java类库,在【Test Suite Settings】里配置Classpath或在系统环境里配置CLASSPATH,两者选其一即可,避免同时配置造成路径冲突与加载顺序问题。

 

  6、核对AUT侧环境变量是否在套件层面显式设置

 

  对于依赖DLL与so、浏览器驱动、字体与渲染资源等,建议在【Test Suite Settings】→【AUT Environment】把关键变量写死到套件里,避免依赖机器的用户环境,变量的键值填写方式按表格Key与Value逐行录入。

 

  7、命令行运行时用ENVVARS文件固化环境

 

  若问题只在CI或命令行出现,用squishrunner运行时优先用ENVVARS文件把AUT所需变量固化,让每次运行前环境一致,再去比较与IDE运行的差异点。

 

  三、squish运行环境应怎样复核

 

  1、把脚本侧与AUT侧分开做一次最小验证

 

  先只跑一个最小用例验证脚本引擎能启动与基础库能导入,再跑一个只负责启动AUT并退出的用例验证AUT侧依赖齐全,避免两头一起查导致线索混在一起。

 

  2、复核Server与客户端机器是否一致

 

  在分布式执行或远程squishserver场景里,Mapped AUT与依赖目录是在server机器上生效,IDE机器本地装得再全也不等同于server环境,检查路径为【Edit】→【Server Settings】→【Manage AUTs】逐项核对。

 

  3、复核环境变量来源并做去重

 

  同一个变量可能来自系统环境、套件AUT Environment、命令行ENVVARS三处,建议把最终想要的值固定在一种来源里,其它来源清理掉,减少同名变量被覆盖造成的偶发报错。

 

  4、复核全局脚本与公共库的版本一致性

 

  公共库如果通过Global Scripts共享,容易出现一台机器更新了脚本另一台没更新,导致导入到旧实现后运行期报错,按paths.ini与GlobalScriptDirs把目录统一到版本受控位置会更稳。

 

  5、复核变更后是否需要重启IDE与server

 

  解释器切换、Mapped AUT调整、全局脚本路径调整后,建议重启Squish IDE并重启squishserver再复测,避免进程还在用旧缓存配置导致你以为改了但实际没生效。

  总结

 

  Squish脚本报错要先把问题落到依赖链条上看清楚,是解释器口径、共享脚本搜索路径、Mapped AUT映射,还是AUT侧环境变量缺失。按【Server Settings】核对AUT映射,按【Test Suite Settings】固化AUT环境,按Shared Scripts与Global Scripts核对公共库位置,并在命令行用ENVVARS统一环境口径,通常能把同类报错从反复出现变成可复现可修复。

135 2431 0251