是否可以使用基于Python的单元测试框架和运行程序来测试C代码

时间:2011-10-04 18:08:44

标签: python c unit-testing

基于Python的单元测试像“鼻子”这样的框架有很多丰富的功能,我想知道我们是否可以利用它们来测试C代码。

1 个答案:

答案 0 :(得分:14)

当然你可以....但是你必须编写一个绑定来在python中调用你的C代码(例如用ctypes),并在python中编写测试(这真的是可能的,一种简单的方法来进行智能测试)

示例:

  • 写一个虚拟C库。

foolib.c

int my_sum(int , int);

int my_sum(int a , int b);
{
    return a + b;
}
  • 将其编译为共享库:

gcc -shared -Wl,-soname,foolib -o foolib.so -fPIC foolib.c

  • 用ctypes编写包装器:

foolib_test.py

import ctypes
import unittest

class FooLibTestCase(unittest.TestCase):
    def setUp(self):
        self.foolib = ctypes.CDLL('/full/path/to/foolib.so')

    def test_01a(self):
        """ Test in an easy way"""
        self.failUnlessEqual(4, foolib.my_sum(2, 2))

然后,当用鼻子运行这个测试时,你应该对你的C代码进行一次很好的测试:)