用unittest和mocks测试复杂结构的一部分

时间:2015-02-04 07:49:34

标签: python regex unit-testing python-unittest

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

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

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

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

1 个答案:

答案 0 :(得分:1)

尝试在自己的Test中测试Rule和ValueSetter。在您的问题中描述的5个案例中测试规则是否真正符合您的想法。然后,当您测试ValueSetter时,只需假设Rule执行您的想法并直接设置为message_titlemessage_contentmessage_number。因此,您应该按照规则应该完成的方式注入信息。

这是你通常在单元测试中所做的事情。为了测试一切是否一致,您通常会进行功能测试,从更高/用户级别测试应用程序。

如果在不使用规则的情况下无法构造ValueSetter,则只需为从ValueSetter继承并覆盖__init__方法的测试创建一个新类。通过这种方式,您将能够得到一个空白的'对象并按预期直接设置成员变量。