def test_sysrule_required(self): param = Parameter("myparam") # 赋了值的情况下,能够正常通过检查 self.assertEqual(param.verify(dict(myparam="xyz")), "xyz") # required 默认应为 True,所以这里应该验证失败 self.assertRaises(VerifyFailed, param.verify, {}) # 手动设置 required 为 True 的结果应该和使用默认值时一样 param2 = Parameter("myparam2", required=True) self.assertRaises(VerifyFailed, param2.verify, {}) # 若 reuired 为 False,则不会抛出异常。且因为没有指定默认值,所以最终会返回 NoValue param3 = Parameter("myparam3", required=False) self.assertEqual(param3.verify({}), NoValue) # 在 required 为 False 的情况下,如果给出了参数值,仍能正确返回参数值 param4 = Parameter("myparam4", required=False) self.assertEqual(param4.verify(dict(myparam4="123")), "123") # 只要参数有值,即使值为 None,也应该能通过 required 的检查 # (但这样子通不过 nullable 的检查,所以要把它关闭) param5 = Parameter("myparam5", nullable=True) self.assertEqual(param5.verify(dict(myparam5=None)), None)
def test_verify(self): param = Parameter() self.assertEqual(param.verify(10), 10) self.assertRaises(VerifyFailed, param.verify, None) param2 = Parameter(nullable=True) self.assertEqual(param2.verify(None), None)
def test_sysrule_nullable(self): # nullable 默认应为 False param = Parameter("myparam") self.assertRaises(VerifyFailed, param.verify, dict(myparam=None)) # nullable=True 时,各种值都应该能够通过检查 param2 = Parameter("param2", nullable=True) self.assertEqual(param2.verify(dict(param2=None)), None) self.assertEqual(param2.verify(dict(param2=1)), 1)
def test_verify_method_and_sysrule_default(self): param = Parameter("param1", default=10) # 1. default 的执行顺序应该在 required 前面,所以 required 不会在填充默认值之前就进行检查,导致误报。 # 2. default 对参数值的更新能够传递到 required 那里,这样它才会认为参数是有值的 # 3. 通过所有验证后,经过调整的参数值会被返回给调用者 self.assertEqual(param.verify({}), 10)