生成网络图的一种假设策略

hypothesis-networkx的Python项目详细描述


假设网络x

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

安装

此模块可以通过pip

安装
pip install hypothesis-networkx

用户指南

模块公开一个函数:graph_builder。这个函数是 构造图的假设合成策略。您可以如下使用:

fromhypothesis_networkximportgraph_builderfromhypothesisimportstrategiesasstimportnetworkxasnxnode_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))

当然,这个构建器是一个有效的假设策略,并且使用它来 举例并不是很有用。相反,你可以(也应该)在 您的测试框架:

fromhypothesisimportgiven@given(graph=builder)deftest_my_function(graph):assertmy_function(graph)==known_function(graph)

graph_builder的参数的含义是非常漂亮的 不言而喻,但它们必须作为关键字参数给出。

  • node_data:从中提取节点属性的策略。
  • edge_data:从中提取边缘属性的策略。
  • node_keys:从中提取节点键的策略,或者 没有。如果没有,则节点键将是范围(0,节点数)中的整数。
  • {{CD7}}和^ {CD8}}:节点的最小和最大数目 生成的图表将包含。 {{CD9}}和^ {CD10}}:边的最小和最大数 生成的图表将包含。注意,少 如果有超过min_edges的边,则可以添加 没有足够的节点,并且超过 max_edges如果connected为真。
  • graph_type:将调用此函数(或类)而不使用 创建一个空的初始图形。
  • connected:如果为true,则生成的图保证是单个的 连接的组件。
  • self_loops:如果为false,则生成的图中不会有自循环。 自循环是节点和自身之间的边。

已知限制

本模块有一些(次要)未解决的问题:

  • 对于大型图,图形生成可能很慢。
  • 当生成的图 太小了。
  • 如果connected为真,则不总是遵守max_edges参数。
  • 它目前适用于Python2.7,但这被认为是不推荐的,而且 可能会在没有通知的情况下停止工作。

另请参见

NetworkxHypothesis

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

推荐PyPI第三方库


热门话题
java Kafka producer大量内存使用(泄漏?)   java NullPointerException。。。正在插入数据但无法检索数据[Mysql DB]   java spring+jpa+hibernate=没有可用于当前线程的实际事务的EntityManager无法可靠地处理“persist”调用   getelementbyid在没有ID的情况下如何在java中使用GetElementsById   java有没有一种使用WatchService强制轮询的方法?   java将值从jframe传递给另一个jframe并使用它   Java/Groovy中带重试的反应式事件处理   具有两个包装器元素的java Jackson XML ArrayList输出   java总是在范围内使用不同的随机元素   取消选择java下拉列表值   多线程如何在Java中为对象的不同成员拥有不同的同步块   java如何使用多线程从文本文件中读取输入   java Spring启动附加崩溃命令   java使用公共或单独的actionPerfomed方法有什么区别   java用Spring3.0中的SpEL替换JSP中的EL   java作为windows服务运行应用程序时无法访问共享文件夹   java xml 1.1规范中的“解析数据”是什么意思?   以编程方式设置JComboBox索引时java触发ItemListener   java Android WebView:只加载HTML,不加载JS或CSS(在某些设备中)   Java:计算do/while循环的数量