易截截图软件、单文件、免安装、纯绿色、仅160KB

自动化测试中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_p,相当于char* str=”Hello World!”
libc.printf(“yell: %s\n”, 
str
)


#调用printf函数
ctypes的功能当然远不止这些,有兴趣的同学可以参考这里
http://docs.python.org/library/ctypes.html
使用Python
的扩展(
Extending
)机制
ctypes很方便地可以调用
C
的动态库,但是对
C++
编译的动态库,调用起来很困难。这种情况利用
Python

Extending
机制就可以解决。
Python
提供了一套完整的框架来使用
C/C++
编写扩展库,可以很灵活的开发
C++
扩展模块。这种方法的


相关文档:

c与c++的区别(基础)

为了用vc写一个最简单的 socket 程序,花费了一个下午的时间,过程中出现的错误有:
'SOCKET' : illegal use of this type as an expression
syntax error : missing ';' before 'type'
syntax error : identifier 'InitWinsock'   -->       bool   InitWinsock( ......

C/C++时间函数的使用

一、获取日历时间
time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是:
 typedef long time_t;        /* time value */
可以看出time_t其实是一个长整型,由于长整型能表示的数值有限,因此它能表示的最迟时间是2038年 ......

C变参函数的实现机制

C的变参问题与print函数的实现
我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int printf( const char* format, ...); 
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:
   printf("%d",i);
&nb ......

用c读取XML文件

 
  可以将XML文件的树(只有一个顶层节点).于是理所当然的可以用树作为XML的一种存储结构.
我将在这里用C++实现对简单的XML文件的解析.
1.选择存储结构:
树型数据结构有多种存储方式,我将用"孩子兄弟表示法",定义如下:
typedef struct CSNode
{
int subNodes;
string data;
string name;
struct CSNode *fi ......

c sharp 命令行的用法

使用 C# 2.0 命令行编译器
http://msdn.microsoft.com/zh-cn/library/ms379563(vs.80).aspx#mainSection
摘要:本文分析了使用 C# 命令行编译器 csc.exe 生成应用程序的过程。同时,还将向读者介绍很多为 C# 2.0 独有的编译器选项,例如,extended/reference 标志和强名称支持。阅读完本文的内容之后,您将能够轻松地在没 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号