跳转到主要内容

用于生成NetworkX图的假设策略

项目描述

Build Status codecov

Hypothesis-networkx

此模块提供了一种用于生成networkx图的假设策略。这可以用来有效地彻底测试您的代码。

安装

可以通过pip安装此模块

pip install hypothesis-networkx

用户指南

该模块公开了一个函数:graph_builder。此函数是构建图的假设复合策略。您可以按以下方式使用它

from hypothesis_networkx import graph_builder
from hypothesis import strategies as st
import networkx as nx

node_data = st.fixed_dictionaries({'name': st.text(),
                                   'number': st.integers()})
edge_data = st.fixed_dictionaries({'weight': st.floats(allow_nan=False,
                                                       allow_infinity=False)})


builder = graph_builder(graph_type=nx.Graph,
                        node_keys=st.integers(),
                        node_data=node_data,
                        edge_data=edge_data,
                        min_nodes=2, max_nodes=10,
                        min_edges=1, max_edges=None,
                        self_loops=False,
                        connected=True)

graph = builder.example()
print(graph.nodes(data=True))
print(graph.edges(data=True))

当然,这个构建器是一个有效的假设策略,仅用它来生成示例并不特别有用。相反,您应该(并且应该)在您的测试框架中使用它

from hypothesis import given

@given(graph=builder)
def test_my_function(graph):
    assert my_function(graph) == known_function(graph)

传递给graph_builder的参数的含义相当直观,但它们必须作为关键字参数提供。

  • node_data:节点属性将从中提取的策略。
  • edge_data:边属性将从中提取的策略。
  • node_keys:节点键将从中提取的策略,或None。如果是None,则节点键将是范围(0,节点数)的整数。
  • min_nodesmax_nodes:生成的图将包含的最小和最大节点数。
  • min_edgesmax_edges:生成的图将包含的最少和最多边数。注意,如果节点不足,边数可能少于 min_edges,如果 connected 为 True,则可能多于 max_edges
  • graph_type:此函数(或类)将在不带参数的情况下被调用,以创建一个空的初始图。
  • connected:如果为 True,则生成的图将保证是单个连通分量。
  • self_loops:如果为 False,则在生成的图中将不会有自环。自环是节点与其自身之间的边。

已知限制

此模块有几个(较小的)未解决的问题

  • 对于大型图,图生成可能较慢。
  • 当生成的图太小而不被尊重时,min_edges 参数不一定被尊重。
  • 如果 connected 为 True,则不一定尊重 max_edges 参数。
  • 目前它适用于 Python 2.7,但已被视为过时,可能不会通知而停止工作。

另请参阅

Networkx

Hypothesis

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

hypothesis_networkx-0.3.0.tar.gz (12.3 kB 查看散列)

上传时间

构建分布

hypothesis_networkx-0.3.0-py2.py3-none-any.whl (10.6 kB 查看散列)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页