C项目的最小模拟实用程序。

narmock的Python项目详细描述


Narmock

Build StatusPyPIPyPI - Python VersionCode style: black

A minimal mocking utility for C projects.

正在工作

narmock会发现在测试中被模拟的函数,并使用光滑的api生成模拟。

#include<time.h>#include"__mocks__.h"#include"narwhal.h"TEST(example){MOCK(time)->mock_return(42);ASSERT_EQ(time(NULL),42);}

This example is a test written with Narwhal but Narmock can be used with other test frameworks and anywhere in regular source code.

安装

可以使用pip安装包。

$ pip install narmock

开始

命令行实用程序提供了两个基本命令,可以将narmock集成到任何类型的构建系统中。

usage: narmock [-h] (-g [<code>] | -f) [-d <directory>]

A minimal mocking utility for C projects.

optional arguments:
  -h, --help      show this help message and exit
  -g [<code>]     generate mocks
  -f              output linker flags
  -d <directory>  mocks directory

Check out the basic example for a simple Makefile that integrates both Narwhal and Narmock.

生成模拟

narmock -g命令查找代码中模拟的函数,并生成分别定义和声明所有必需模拟的__mocks__.c文件和__mocks__.h文件。

$ gcc -E *.c | narmock -g

narmock要求预处理器扩展源代码。您可以直接将gcc -E的输出管道到命令行实用程序。

默认情况下,__mocks__.c__mocks__.h将在当前目录中创建。可以使用-d选项指定不同的输出目录。

$ gcc -E tests/*.c | narmock -g -d tests

检索链接器标志

narmock -f命令读取生成的__mocks__.h文件,并输出将所有源文件链接到一起所需的链接器标志。

$ gcc $(narmock -f) *.c

默认情况下,该命令在当前目录中查找__mocks__.h。可以使用-d选项指定其他目录。

$ gcc $(narmock -f -d tests) tests/*.c

模拟API

MOCK宏返回指向给定函数的模拟api的指针。

MOCK(time);

模拟返回

可以使函数返回特定值,而不调用其原始实现。

MOCK(time)->mock_return(42);printf("%ld\n",time(NULL));// Outputs 42

模拟实现

您可以切换函数的实现。

time_ttime_stub(time_t*timer){return42;}MOCK(time)->mock_implementation(time_stub);printf("%ld\n",time(NULL));// Outputs 42

禁用mock

您可以禁用模拟并使函数调用其原始实现。

MOCK(time)->disable_mock();printf("%ld\n",time(NULL));// Outputs the current time

贡献

欢迎捐款。请随时提出问题和改进建议。此项目使用poetry,因此如果希望能够在本地使用此项目,则需要首先安装它。

$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

现在您应该能够安装所需的依赖项。

$ poetry install

代码遵循black代码样式。

$ poetry run black narmock

您可以使用poetry run make -C tests运行测试。测试套件是用Narwhal构建的。

$ poetry run make -C tests

许可证-MIT

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

推荐PyPI第三方库


热门话题
java更新来自AWS SNS客户端的SMS发送结果   php Java:HTTP post多维数组   Java哈希表值求和   java将Vaadin应用程序更改为使用安全websocket连接   javaprintf和新行   重新加载Java枚举   反射以一种安全的方式调用API方法,防止JAVA中库版本之间的更改   java在构建maven项目时无法运行“egrep”   需要初始化对象时使用的java设计模式?   java为什么当这个布尔值与我的正则表达式匹配时没有改变?   java(JTabbedPane)透明与Nimbus不同,不适用于L&F   java准备语句失败   关于从API读取数据的java CouchDB问题