我有一堆处理值验证的类。例如,一个RangeValidator
类检查一个值是否在指定范围内。
每个验证器类都包含两个方法:is_valid(value)
,该方法返回True
或False
取决于值,并ensure_valid(value)
检查指定的值,如果值有效,则不执行任何操作,或者,如果值与预定义的规则不匹配,则抛出特定的异常。
当前有两种与此方法关联的单元测试:
传递无效值并确保引发异常的代码。
def test_outside_range(self): with self.assertRaises(demo.ValidationException): demo.RangeValidator(0, 100).ensure_valid(-5)
传递有效值的那个。
def test_in_range(self): demo.RangeValidator(0, 100).ensure_valid(25)
尽管第二项测试已完成工作-如果抛出异常,则失败,如果ensure_valid
没有抛出异常,则成功,但assert
内部没有s 的事实看起来很奇怪。读过此类代码的人会立即问自己,为什么要进行似乎无所事事的测试。
当测试不返回值且没有副作用的方法时,这是当前的做法吗?还是应该以其他方式重写测试?或者只是发表评论以解释我在做什么?
self
引用)且不返回结果的函数,则它不是纯函数。
void
在许多语言中都被调用并且具有愚蠢的规则。)或者,您可以拥有无限个循环(即使“不返回结果” 实际上意味着不返回结果也有效
unit -> unit
该函数将unit视为标准数据类型,而不是某种神奇的特殊情况。不幸的是,它只是返回单位而没有执行任何其他操作。