Python 树数据结构的无序集单元测试

Python Unit Testing with Unordered Set for Tree Data Structure

背景

我正在尝试为我正在构建的树数据结构添加单元测试 (python 3)。树结构使用集合(无序),我正在努力寻找方法来测试我的树的某些方法 class。

例子

鉴于图表树...我有一种方法可以分离一个节点(比如#2),然后选择其中一个 children(3 或 4)来取代它的位置而不是父节点它们都到节点 1。(这在假设 #2 是根并且我们仍然希望 3 和 4 在 2 被丢弃时相关的情况下很有用。)

      1----------+                     2        1----------+
      |          |                              |          |
  +---2---+      |    Detaching Node "2"        3---+      |
  |       |      11        -->                 /|\  |      11
  3       4     /| \                          5 6 7 |     /| \
 /|\     /|\  12 13 14                              4   12 13 14
5 6 7   8 9 10                                     /|\
                                                  8 9 10

问题

集合是无序的,我select child(3和4中)的方法是检查节点2是否有children,然后弹出一个child 从他的一组 children 中取出,并使之成为那个。因为集合是无序的,所以当我关闭 child 时,我在测试用例中得到(看似)随机结果。

问题

我的策略应该是什么来测试这样的方法(我读过有关使用随机模块时测试困难的文章,但我也读过集合确实有某种可预测的顺序)?我应该只测试 around 这个问题吗?我应该试着弄清楚集合的顺序是 "popped" 吗?

测试该方法是否完成了它应该做的事情。运行后,正确的节点是否被其children之一替换了?如果是这样,太好了!如果不是,则报告失败。

您无需断言它已被任何特定的 child 取代。