一种使c代码可从python测试的适配器

headlock的Python项目详细描述


#headlock-用于单元测试的python/c桥

<;!--[![构建状态](https://api.travis-ci.com/mrh1997/headlock.svg?branch=master“构建状态”)(https://travis-ci.com/mrh1997/headlock)-->;
[![文档状态](https://readthedocs.org/projects/headlock/badge/?version=latest“documentation generation state”](https://headlock.readthedocs.io/en/latest/)

与其他c/python桥(如cTypes、cffi、swing,…)相反,这个项目的目标是:

-运行(和编译)一段c代码(正在测试的模块)
开箱即用,尽可能少的python代码行。
不需要创建makefile,不需要运行额外的构建步骤。
-提供一个简单的,用于访问c对象的直观api
-允许快速:
-模拟python中的底层c模块
-在
同时使用被测模块的不同二进制文件。
-使用
不同的预处理器定义的二进制文件测试被测模块
-在单独的地址运行c代码避免崩溃的空间
正在测试的模块也会崩溃测试python代码
(尚未实现!).
-特别是让它与嵌入式系统一起工作,以便
-c代码可以在*真正的硬件*上运行,而python测试可以在pc上运行。
(主要用于集成测试)
这还没有实现!
C代码可以在PC机上运行,而不是嵌入式环境。
(主要用于UNITTEST)
BR/>显式非目标是:
BR/>支持C++的未计划
-性能有非常低的优先级。这并不意味着它是慢的。但是,如果速度与本项目的目标之一相冲突,
将不会有任何有利于速度的妥协。
-不计划自给自足。需要安装C编译器
。此外,当前llvm必须安装在用于分析文件的
位置。
-python<;3.6将永远不受支持


一个结构函数
一个结构函数和一个依赖于
(应该被嘲笑)的函数的实现和一个依赖于
(应该被嘲笑):

``c
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `_func(P->;A+P->;B+宏_1);
}
```

=ts.struct.ops_t(a=ts.macro_2,b=20)
assert ts.func(ops.ptr).val==4021
````

*这演示了如何:
*每个.py文件可以处理同一c源的不同二进制文件
(因为每个文件都是testsetup派生类而不是模块)
*每个二进制文件都可以用其他参数编译根据testsetup设置不同)
*可以从python访问结构/联合/枚举/类型定义,而无需
额外声明(在本例中为“struct ops”或“typedef”)。
*可以从python访问c函数,而无需额外声明
(在本例中为“func”或“func”)。(``C`U macro``在本例中)
*您可以从C调用Python方法(=模拟不属于被测模块的C函数;在本例中,
``底层函数')。甚至可以动态地替换mock(即使用unittest.mock.mock())

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用applets查询的多人java游戏?   java如何基于字符串生成数组   基于java多边形的路径查找   java如何对多列ArrayList排序   java批处理更新从更新中返回了意外的行数(Spring/Hibernate)   java如何使用SeleniumWebDriver列出<tr>标记内的所有<td>   java如何使用SimpleFlatMapper将前缀为CSV的列别名到映射?   java为什么通过eclipse运行/调试TomCat时会出现ClassNotFoundException   java Android滚动视图上次视图未显示内部线性布局   替换字符串中不带空格的字符序列   调用方法时Java Swing GUI冻结   java是否允许/建议重用收集器?   在同步方法中使用java hashmap迭代器时   在java XMLDecoder XMLEncoder中写入XMLdatabase   java I无法在活动的片段中填充recyclerview   java Jitsi在调用过程中播放WAV文件如果可能,与音频混合   java JPA为什么我看到DB中每行有两个实体实例?