我有一个函数验证一个模型类,它必须检查每个类的成员是非空或非空的字符串的情况下。如何测试具有N个不同路径的函数?
此is_complete
功能的逻辑是这样的:
def is_complete(profile):
if profile.first_name in (None, ''):
return False
elif profile.last_name in (None, ''):
return False
elif profile.dob is None:
return False
.
.
.# and checks so on for all members of the profile instance
.
.
return True
我的问题,因为可能的路径的执行可以采取的数量是相当大的,并增加比例的profile
成员变量的数量被检查,如何可靠地为所有可能的路径编写测试?
现在,我有两个简单的测试案例:
- 只有一些成员设置和检查
assertFalse(is_complete(foo))
- 其中所有成员设置和检查
但我有一种感觉,这可能还不够。
在单元测试中,您不一定要测试每条路径。有许多功能甚至不可能实用。你只是想测试足够。如果一个函数很复杂,这可能是一个标志,应该把它分解成更小的函数。 – ThomasW
你应该认真反思你的课堂设计。理想情况下,应该不可能首先创建部分初始化对象。施工人员应该照顾这一点。如果您在建造时无法获得初始化班级所需的某些数据,请尝试将其提取到不同的班级中。 –
@FrankPuffer将它的成员作为空字符串或空值的实例不会被视为初始化_部分,因为它代表实例可以处于的有效状态。它可能表示用户愿意将其留空的某些字段的表单。 –