Python文本变量与函数的解析执行,增强自动化测
我们在使用Python进行自动化测试或者测试脚本开发时,通常会在代码中融入数据驱动设计,以便于降低代码开发、维护成本,例如我们在进行接口自动化测试时,我们会使用不同的数据(入参数据、期望结果数据),驱动同一条自动化测试用例执行,已验证该接口在不同场景下功能是否正常,通常我们会将这些数据存储在数据库、yaml、Excel或其他文件中。
在数据驱动的具体实现设计中,我们使用的各数据类型通常都是固定值(静态值),比如固定的字符串、数字、列表、字典等等,来驱动自动化测试用例或者脚本的执行。
但当在需要非固定(动态)进行数据驱动测试时,例如,在进行接口测试时,请求体中存在 ''time''(当前时间)属性,每次发送请求时,都需要使用当前时间。那么该如何设计代码实现数据驱动呢 ?
本文,通过Python 解析字符串中变量名、函数名(函数的参数),同时支持加载指定自定义模块,获取模块方法及变量对象,以实现动态加载字符串并将字符串中的变量名、函数名,替换为变量值、函数返回值。
我们可以通过下面示例,更直观地了解一下:
示例
例如,我们加载数据驱动文件(YAML格式 ) ,其中包含 $变量名 、${函数名($变量名, )}内容。
上述Yaml文件中的变量、函数,我们可以在指定的一个或多个自定义模块中进行设计、开发。如下,我们在 built_in.py 模块中设计了MODULE、TERMINAL_NAME变量,以及now_time、phone函数。
通过已实现ParseContent 类中的解析方法,即可完成解析,如下:
执行如上代码,上述 Yaml文件内容,解析结果如下 :
源码分享
为了方便阅读,源码中,将各模块代码合入一个模块中。
上述代码已经完成改造,支持添加多个自定义模块,解耦模块加载和字符串解析功能。