跳转到主要内容

生成Python程序的假设策略,类似于CSmith。

项目描述

hypothesmith

生成Python程序的假设策略,类似于CSmith。

这绝对是预alpha版本,但如果你想玩玩,请随意!即使它崩溃了,你甚至可以保留那些闪亮的部分。

今天通过 pip install hypothesmith,或者通过克隆 GitHub仓库 获取。

您可以使用Python 3.6或更高版本的tox运行测试,例如。使用tox -va查看可用的环境。

用法

此包提供了两个用于生成Python源代码的Hypothesis策略。

生成的代码始终是语法有效的,并且对于测试解析器、linters、auto-formatters和其他在源代码上操作的工具非常有用。

不要执行这些策略生成的代码。

它实际上可以做任何运行Python代码能做的事情,包括更改、删除或上传重要数据。任意代码可能很有用,但“任意代码执行”可能会非常、非常糟糕。

hypothesmith.from_grammar(start="file_input", *, auto_target=True)

基于语法生成语法有效的Python源代码。

有效值 start"single_input""file_input""eval_input";分别对应单个交互式语句、从文件读取的模块或命令序列、以及 eval() 函数的输入。

如果 auto_targetTrue,此策略将内部使用 hypothesis.target() 来驱动向更大的更复杂的示例发展。我们建议保持此功能启用,因为语法相当复杂,否则只能生成简单的示例。

hypothesmith.from_node(node=libcst.Module, *, auto_target=True)

根据由 LibCST 项目定义的节点类型生成语法有效的 Python 源代码。

您可以传递 libcst.CSTNode 的任何子类型。或者,在 Hypothesmith 注册了所需的策略后,您可以使用 Hypothesis 内置的 from_type(node_type).map(lambda n: libcst.Module([n]).code。但是,这不包括自动定位和 LibCST 的限制可能会导致生成无效的代码。

使用 Hypothesmith 发现的显著错误

变更日志

补丁说明 可在 CHANGELOG.md 中找到。

项目详细信息


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

hypothesmith-0.3.3.tar.gz (25.5 kB 查看哈希)

上传时间 源代码

构建分发

hypothesmith-0.3.3-py3-none-any.whl (19.2 kB 查看哈希)

上传时间 Python 3

由以下支持