自动化测试中Python与C/C++的混合使用

背景


       项目的自动化测试中已经使用了基于Python脚本的框架,自动化过程中最关键的问题就是如何实现桩模块。运用Python强大的功能,实现任何桩模块都是可能的,但是是否必须完全使用Python实现模块逻辑,成本是一个决定性因素。在桩模块逻辑简单的情况下,使用Python模拟模块逻辑不但使自动化测试的结构清晰,也具有更好的灵活性,但是如果桩模块逻辑复杂,实现起来可能要耗费很大的成本,也容易由于桩模块逻辑与实际不符导致测试结果不可信。在这种情况下,如果能够借用RD开发的某些代码段/库,将会对测试自动化带来很多效益。 
       另外,在Python中调用C/C++代码的方法也可能应用于C/C++库的测试中,这种测试方法的可行性还有待研究。 
       以下总结出几种在Python中调用C/C++代码的方法

使用ctypes模块调用C动态库


       从Python2.5开始,Python开始提供ctypes模块来提供对C语言编译的动态库文件的调用。注意, 这里特指C的动态库 ,用C++编译的动态库ctypes虽然能够加载,但调用时的函数名已经由于C++的重载特性被加以修改,难以调用。 使用ctypes调用C动态库的好处在于不用进行额外的开发,可以直接使用编译好的动态库。ctypes提供了完整的C类型封装,也支持自定义类型,大大减少在调用过程中的工作量。ctypes的使用很简单,只需熟悉python封装与C中的对应关系即可。以下用一个简单的例子来说明:

from ctypes import * #导入ctypes模块
libc = cdll.LoadLibrary("libc.so.6") #加载libc动态库
str = c_char_p('Hello World!') #使用char *在ctypes中的对应封装c_char
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值