自 SoloPi 上线已有半载,收到了一些用户的正向反馈,也给广大测试同学带来一定的效率提升的,和我们的初衷 “为业界带来美而小的工具” 相吻合。同时也收到一些建议,例如 SoloPi 还不支持 CI。经过分析,多数公司 CI 都依赖与主流测试框架实现,SoloPi 虽然用例录制体验非常好,但与主流测试框架不兼容,如果能让 SoloPi 与主流测试框架兼容,那该问题迎刃而解了。
为了让 SoloPi 与主流测试框架兼容,用例兼容是关键,本期我们添加了用例转换功能。
SoloPi 用例与常规用例有所不同,它会将录制时控件的全部信息都保存下来,在回放时综合进行匹配,而一般的自动化用例往往只会使用其中一种信息进行匹配。为了更好地适应用户需求,转化脚本支持为每一个步骤配置查找的条件,方便用户选择最合适的方式执行。
目前,SoloPi 转化脚本提供了 Appium、Macaca 两种语言的转换。你也可以根据自己的需要,参照后文代码解析部分,实现自己的转化脚本。
执行入口
python3 handler.py
输入 SoloPi 脚本地址
选择转化类型(目前支持 Appium 和 Macaca)
选择输出目录
每一步单独选择查找方式
导出完成,可以在对应目录查看导出的用例脚本,导出的脚本文件会被命名为 main.xxx 。
SoloPi 用例核心转化逻辑在 exporter module 下,用户可以扩展 BaseExporter 类,来实现自己的转换器
class BaseExporter(object):
"""
Export SoloPi case to file
"""
@staticmethod
@abstractmethod
def get_name() -> str:
"""
Get name for this exporter
"""
pass
@abstractmethod
def get_file_extension(self) -> str:
"""
Get File Extension for this type
:return:
"""
pass
def export_head(self, case_info: CaseInfo) -> str:
"""
Export file head, you can export some universal method in this part
"""
return ""
@abstractmethod
def export_step(self, step: Step, index: int, case_info: CaseInfo) -> str:
"""
Export every step
"""
pass
def export_tail(self, case_info: CaseInfo) -> str:
"""
Export file tail, for driver stop
"""
return ""
其中各方法含义如下
get_name: 获取该导出器名称
get_file_extension: 获取导出文件的扩展名
export_head:获取导出文件的前缀文本
export_step:获取单步骤导出的文本
export_tail:获取导出文件的后缀文本
具体实现可以见 appium.py 与 macaca.py
立即体验 SoloPi 最新功能
https://github.com/soloPi/SoloPi-Convertor
体验 SoloPi 完整功能
https://github.com/alipay/SoloPi
欢迎大家在日常的回归测试、兼容性测试以及性能测试过程中试用 SoloPi 工具,过程中如有任何问题和意见,可以在 github 上通过 Issue 进行反馈,也可加入 SoloPi 开源交流群参与讨论。