代码之家  ›  专栏  ›  技术社区  ›  Björn Pollex

为返回对象层次结构的函数编写单元测试

  •  4
  • Björn Pollex  · 技术社区  · 14 年前

    我有一个函数,它对输入向量列表执行层次聚类。返回值是对象层次结构的根元素,其中每个对象表示一个集群。我想测试以下内容:

    1. 每个簇是否指向正确的父簇?

    我有两个问题。首先,如何指定预期的输出 以可读的格式 A B child1 child2 . 我不在乎 孩子1 对应于群集 ,只是它对应于其中一个 孩子2

    3 回复  |  直到 14 年前
        1
  •  2
  •   msw    14 年前

    如果有同构的结果,您可能应该有一个谓词可以测试逻辑等价性。这可能对您的代码单元有好处,也有助于实现单元测试。

    至于可读性问题,你需要展示你认为不可读的东西,才能给出正确的答案。也许等价谓词可以避免这种情况。

        2
  •  0
  •   Manoj Govindan    14 年前

    这是我的一个不切实际的建议。它也有点迂回。注意,清空!

    首先,编写一个函数来创建集群的字符串表示形式。您必须编写单元测试,以确保此函数在所有情况下都能工作。格式可以是定制的或XML(不完全是人性化的,但通常很容易处理分层数据)。您可以通过传入集群来调用此函数: string_representation(cluster) .

    util.test.generate_string_representation('child1', 'child2') .

    第三,修改单元测试断言以比较 具有 generate_string_representation('child1', 'child2') 视情况而定。

    actual = string_representation(f(*args, **kwargs))
    expected = generate_string_representation('child1', 'child2')
    self.assertEqual(actual, expected)
    

    确保两个字符串函数使用相同的机制格式化其输出。你不想在弦上追逐细微的差别。

    我告诉过你,这是相当刻薄的。我希望其他人有更好的答案。

        3
  •  0
  •   Kozyarchuk    14 年前