【发布时间】:2011-10-04 18:08:43
【问题描述】:
像“nose”这样的基于Python的单元测试框架有很多丰富的功能,我想知道我们是否可以利用它们来测试C代码。
【问题讨论】:
标签: python c unit-testing
像“nose”这样的基于Python的单元测试框架有很多丰富的功能,我想知道我们是否可以利用它们来测试C代码。
【问题讨论】:
标签: python c unit-testing
当然可以....但是您必须编写一个绑定以在 python 中调用您的 C 代码(例如 ctypes),并在 python 中编写测试(这确实可行且简单进行智能测试的方法)
示例:
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
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 代码有一个很好的测试:)
【讨论】:
int my_sum(int a, int b)第二次写入后不应有分号,还有self.failUnlessEqual(4, self.foolib.my_sum(2,2))(注意self.failUnlessEqual)