如何在同一Squish测试套件中使用多个对象映射?
Squish多对象映射拆分配置解决方案
问题概述
- 基于Squish构建测试框架,需将庞大的Object Map按逻辑拆分为多个脚本式映射,部分映射要支持多测试套件共享访问
- 拆分后自定义命名的映射文件(如
custom_name_common_map.py)无法被识别,仅测试套件本地的names.py能生效 - 即便删除或重命名
names.py,Squish仍会自动生成该文件 - 已在
suite.conf配置OBJECTMAP = custom_name_common_map.py、设置备用对象映射,但均无效果
关键概念说明
names.pyc:这是Python编译生成的字节码文件,由Python解释器自动创建,目的是加快脚本加载速度,不需要手动编辑或打开,删除后会随names.py重新生成。
解决方案步骤
1. 配置正确的对象映射路径
Squish加载对象映射的优先级为:测试套件本地names.py > 配置的默认对象映射 > 备用对象映射。要让自定义共享映射生效:
- 打开目标测试套件的
suite.conf文件,将OBJECTMAP设置为共享自定义映射的相对路径,比如针对你的目录结构,suite_tst_example_1的suite.conf应写:OBJECTMAP = ../../shared/scripts/custom_name_common_map.py - 删除测试套件本地
names.py中的对象定义(保留自动生成的空文件也可以),避免它覆盖共享映射的内容。
2. 导入多个映射文件
如果同一测试套件需要用到多个对象映射,可在主自定义映射文件中导入其他映射的内容。比如在custom_name_common_map.py中添加:
# 导入其他业务模块的对象映射 from shared.scripts.another_custom_map import *
如果导入时提示找不到模块,可在测试套件的初始化脚本(如test.py开头)添加路径:
import sys sys.path.append("../../shared/scripts")
3. 添加共享脚本路径到测试套件设置
- 打开Squish IDE,进入目标测试套件的
Settings>Python>Script Paths - 添加共享脚本目录的路径(比如
../../shared/scripts),确保Squish能正确找到自定义映射文件。
4. 避免对象命名冲突
多个映射文件中如果有同名对象定义,会以最后加载的为准。建议给不同模块的对象加专属前缀(比如通用对象加common_),避免命名冲突。
优化后目录结构示例
suite_example ├── shared │ ├── scripts │ │ ├── custom_name_common_map.py # 通用共享对象映射 │ │ ├── another_custom_map.py # 业务专属对象映射 │ │ └── names.py # Squish自动生成,无需修改 │ └── steps │ └── example_steps.py └── tst-example └── suite_tst_example_1 ├── shared │ └── scripts │ └── names.py # 仅存放当前套件专属对象,或留空 └── suite.conf # 配置OBJECTMAP指向共享映射文件
内容的提问来源于stack exchange,提问作者Molnár Katalin
相关产品推荐
相关产品推荐

