python - 使用 Python 对 C 代码进行单元测试的最简单方法

标签 python c unit-testing swig

我有一堆 C 代码,我想使用 Python 的 unittest 库(在 Windows 中)进行单元测试,但我正在尝试找出连接 C 代码的最佳方式,以便 Python 可以执行它(并取回结果)。有没有人有最简单的方法的经验?

一些想法包括:

  • 使用 Python API 将代码包装为 Python C 扩展
  • 使用 SWIG 封装 C 代码
  • 将 DLL 包装器添加到 C 代码并使用 ctypes 将其加载到 Python 中
  • 在 c 代码中添加一个小型 XML-RPC 服务器并使用 xmlrpclib 调用它(是的,我知道这似乎有点遥远!)

有这样做的规范方法吗?我将经常使用不同的 C 模块来做这件事,所以我想找到一种最省力的方法。

最佳答案

使用 ctypes 将是我的第一直觉,但我必须承认,如果我正在测试一开始不会与 Python 接口(interface)的 C 代码,我只会使用 check . Check具有能够正确报告段错误的测试用例的强大优势。这是因为它在单独的进程中运行每个测试用例。

现在,如果您要为 C 代码创建一个 python 包装器,我会简单地对包装器进行单元测试。除了上面列出的方法,您还可以使用 Cython用类似 python 的代码编写这样的包装器,然后从 Python 中对其进行单元测试。

关于python - 使用 Python 对 C 代码进行单元测试的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482270/

相关文章:

c++ - Sublime Text 启动单独的命令窗口(C/C++)

c - 在 C-windows 中截图

java - 使用 @Configuration 运行单元测试时出现 NoSuchBeanDefinitionException

C++ 模拟框架 : 'Generic' vs 'Declarative'

python手套相似度计算

python - 提取列表中嵌入的字典项

python - django:禁用某一特定字段的tinymce

c++ - 为什么这种声明函数的方式在 C++ 中已过时?

c# - 在单元测试中验证 Autofac 注册

python - 无法从 scrapy.CrawlerProcess 获取 Scrapy Stats