【技术实现步骤摘要】
一种基于代码对象的Python钩子函数方法和装置
本专利技术涉及一种测试系统,尤其涉及一种基于代码对象的Python钩子函数方法和装置。
技术介绍
随着计算机软件行业的发展,以及电子设备的硬件性能不断提高,应用程序的功能变得越来越复杂,且规模也越来越大。在应用程序的开发阶段,为了对其内部各个函数的实际调用情况进行分析,相关函数往往要被执行hook操作。对函数执行hook操作是一种监控函数运行的方法,其指通过拦截应用程序运行时对原函数的访问,并将应用程序重定向到开发人员自定义的函数上。由于开发人员在其自定义的函数上方便地调用各种测试工具,因此对函数的hook操作能够监控应用程序中关键函数的执行并修改相关函数的具体行为,从而为测试的自动化提供了很多方便。因为在Python中,函数是以对象的形式存在;所以在Python中调用函数时,应用程序需要根据函数名字找到函数对象,从而调用相应的函数。目前,行业内对Python中的函数进行hook操作时一般采用所谓的MonkeyPatch的方法。该方法通过把函数名字所对应的函数对象替换为自定义的函数对象,从而将应用程序重定向至自定义 ...
【技术保护点】
1.一种基于代码对象的Python钩子函数方法,其特征在于,包括以下步骤:获取目标函数相对应的目标函数信息,所述目标函数信息至少包含由以下项组成的组:目标函数的参数类型和闭包函数的闭包变量个数;根据所获取的目标函数信息,创建与目标函数具有相同参数类型和闭包变量个数的调试函数;分别获取目标函数相对应的第一函数对象和调试函数相对应的第二函数对象,并将第一函数对象中func_code成员赋值给第二函数对象的func_code成员;调用目标函数以触发调试函数。
【技术特征摘要】
1.一种基于代码对象的Python钩子函数方法,其特征在于,包括以下步骤:获取目标函数相对应的目标函数信息,所述目标函数信息至少包含由以下项组成的组:目标函数的参数类型和闭包函数的闭包变量个数;根据所获取的目标函数信息,创建与目标函数具有相同参数类型和闭包变量个数的调试函数;分别获取目标函数相对应的第一函数对象和调试函数相对应的第二函数对象,并将第一函数对象中func_code成员赋值给第二函数对象的func_code成员;调用目标函数以触发调试函数。2.根据权利要求1所述的方法,其特征在于,在执行所述方法前还包括以下预处理:注入运行中的服务器进程,以获取与Python虚拟机交互的shell。3.根据权利要求1所述的方法,其特征在于,第二函数对象包含打印外部日志文件的语句。4.根据权利要求3所述的方法,其特征在于,第二函数对象所生成的外部日志文件被保存在测试服务器和/或运行测试用例的终端上。5.根据权利要求1所述的方法,其特征在于,所述调试函数是...
【专利技术属性】
技术研发人员:黎健钧,刘青云,廖泉辉,李邦戈,刘鼎三,杨明邦,
申请(专利权)人:珠海金山网络游戏科技有限公司,珠海西山居互动娱乐科技有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。