用于生成NetworkX图的假设策略
项目描述
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_nodes
和max_nodes
:生成的图将包含的最小和最大节点数。min_edges
和max_edges
:生成的图将包含的最少和最多边数。注意,如果节点不足,边数可能少于min_edges
,如果connected
为 True,则可能多于max_edges
。graph_type
:此函数(或类)将在不带参数的情况下被调用,以创建一个空的初始图。connected
:如果为 True,则生成的图将保证是单个连通分量。self_loops
:如果为 False,则在生成的图中将不会有自环。自环是节点与其自身之间的边。
已知限制
此模块有几个(较小的)未解决的问题
- 对于大型图,图生成可能较慢。
- 当生成的图太小而不被尊重时,
min_edges
参数不一定被尊重。 - 如果
connected
为 True,则不一定尊重max_edges
参数。 - 目前它适用于 Python 2.7,但已被视为过时,可能不会通知而停止工作。
另请参阅
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
hypothesis_networkx-0.3.0.tar.gz (12.3 kB 查看散列)
构建分布
关闭
散列 for hypothesis_networkx-0.3.0-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 85ae8c4986cd311f0edebcf720b4b3a31ffa7800d560b6f1aa85efb38b4178eb |
|
MD5 | a47c2521909ff6595942709604dddf98 |
|
BLAKE2b-256 | 1dd20a05f16d030f96e91e4e89fa0be96f7554b7c0d9992c5ec716fc6608df93 |