3.2Ppython
1)优点:
① 借助了ython语言的动态性,比较容易书写调试case 。
② Python也有对应的Pyunit框架,并且在高版本包含了Pyunit和Ctypes库,比在C++中使用Cppunit更方便。
③ 结果报表比较清晰,易于定位出错位置,并且出错信息也较详细。
④ 基于Python的跨平台,可以很方便的在多个平台下测试不同平台版本的C代码,而测试脚本基本不用重新编写。
2)缺点
①如果测试静态库,需要先转成动态库,并保证动态库和静态库在使用上没有差异性
②对于头文件定义不完整的库,例如,结构体的声明在.c或者.cpp文件中,需要在Ctypes生成的py文件中手动写生成的映射类型的各个成员。对于非基础类型,需要了解其在Ctypes中的表示形式。
③对于头文件依赖其他库的头文件定义,需要转换对应头文件的定义。
④需要熟悉C、Python和Ctype定义的一些类型及其转换规则。
对于C中的类型,需要了解其对应的Ctype定义,在Python中只能使用其Ctype类型,而不是Python的类型。
对于一些细节问题,需要格外关注其转换,如字节对齐等问题。 对于简单类型的数据准备,成本很低。 对于复杂数据类型的数据准备,成本可能比C更高,比如一个简单的char型空指针,Ctypes定义就比较复杂如POINTER(c_ubyte)() 。
对于C里面常见的一些操作,需要熟悉Python对应的操作,如文件操作、socket操作。
参考资料
[1] Pyunit: http://pyunit.sourceforge.net/pyunit_cn.html
[2] Cppunit:http://www.vckbase.com/document/viewdoc/?id=1258
[3] ctypes tutorial:http://python.net/crew/theller/ctypes/tutorial.html
|