使用单元测试和模拟测试复杂结构的一部分

Test part of complex structure with unittest and mocks

测试以下内容的最佳方法是什么:

我们有一个大型复合体 class,我们称之为 ValueSetter,它接受字符串,从中获取一些数据并将这些数据设置为多个变量,例如 message_titlemessage_contentmessage_number 为了执行此操作,它使用另一个名为 Rule 的 class,其中是用正则表达式描述的特定情况的规则。

需要什么: 因为在每个 Rule 中大约有 5 个案例要匹配,我们打算分别测试它们。

到目前为止,我们只需要在每种情况下断言特定的 Rule returns 正确的字符串。在这种情况下最好的方法是什么?

尝试在各自的测试中测试 Rule 和 ValueSetter。在您在问题中描述的 5 种情况下,测试该规则是否真的按照您的想法行事。然后,当您测试您的 ValueSetter 时,只需假设 Rule 会按照您的想法进行操作,并直接设置 message_titlemessage_contentmessage_number 等。因此,您以 Rule 应该采用的方式注入信息。

这是你在单元测试中通常做的事情。为了测试一切是否协同工作,您通常会进行功能测试,从 higher/user 级别测试应用程序。

如果不使用 Rule 就无法构建 ValueSetter,那么只需为继承自 ValueSetter 的测试创建一个新的 class 并覆盖 __init__ 方法。通过这种方式,您将能够获得一个 'blank' 对象并按照您的期望直接设置成员变量。