2

我是 python 的初学者,我需要测试一个通过引用调用的 C 函数。

这是我的 C 文件:myfile.c

#include<stdio.h>

int my_function(int *x)
{
int A;
printf("enter value of A");
scanf("%d",&A);
*x = 10 * A; // this sets the value to the address x is referencing to
 return 0; 
}

现在,我的 python 脚本应该调用 my_function() 并传递参数,以便我可以检查和验证结果。

就像是 :

result = self.loaded_class.my_function(addressOf(some_variable))

self.assertEqual(some_variable,10)

这可能吗 ??我怎么能做到这一点。我正在用 python 编写脚本进行自动测试,而不是使用交互式 python。

4

2 回答 2

2

如果您将文件编译为共享库或 dll(我不知道该怎么做),您可以使用这样的ctypes(假设它是此示例的 dll):

import ctypes as ct

mylib = ct.cdll.myfile
c_int = ct.c_int(0)
mylib.my_function(ct.byref(c_int))
print c_int.value
于 2013-03-19T14:04:12.553 回答
1

您可以为 C 函数编写 Python 接口,一个简单的示例在Python doc中。但是,如果您只想测试 C 函数,那么您可能最好使用 C/C++ 测试框架,例如Google Test

于 2013-03-19T13:12:03.647 回答