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

时间:2016-08-05 19:21:04

标签: python unit-testing random tree unordered-set

背景

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

实施例

鉴于图解树...我有一个方法可以分离一个节点(比如#2)然后选择其中一个孩子(3或4)来取代它而不是将它们两个都存放到节点1.(这对于说#2是根的情况很有用,我们仍然希望当2被丢弃时3和4相关。)

      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

问题

集合是无序的,我选择子节点(3和4中的方式)的方法是检查节点2是否有子节点,然后从子集中弹出一个子节点并将其作为一个子节点。因为集合是无序的,所以当我把孩子关掉时,我(似乎)在我的测试用例中得到(看似)随机结果。

问题

我的策略应该是如何测试这样的方法(我已经读过使用随机模块时的测试困难,但是我还读过那些集合确实有某种可预测的顺序)?我应该只测试围绕这个问题吗?我应该试着找出该套装的顺序"弹出"在?

1 个答案:

答案 0 :(得分:1)

测试方法是否完成它应该做的事情。操作后,是否有正确的节点被其中一个孩子替换?如果是这样,太好了!如果没有,请报告失败。

您不需要断言它已被任何特定的孩子取代。