我正在尝试将Sandi Metz的单元测试规则应用于真正影响对象公共方面的消息,并通过测试公共内容来间接测试所有私有内容。
因此,我们避免测试实现,并可以随时更改它。
我的问题是:如果我的__init__
方法设置了公开可用的实例属性,我也应该进行单元测试。
我基本上不确定init是否应该被视为私有方法(并且相信如果它设置公共内容它应该进行单元测试)。
示例:
MyClass(object):
def __init__(self, public_parameter_1, public_param_2)
self.public_parameter_1 = public_parameter_1
self.public_parameter_2 = public_parameter_2
使用pytest的测试:
def test_instance():
instance = MyClass(1, 2)
assert instance.public_parameter_1 == 1
assert instance.public_parameter_2 == 2
答案 0 :(得分:1)
这有点棘手,因为Python并没有真正的私有属性。我想你可以测试一些不以下划线开头的东西,或者你可以测试一切,但我通常会限制自己测试需要一些计算或逻辑的东西。在你给出的例子中,我不打算测试这两个简单的任务。
如果您想要检查__init__()
方法,可以使用某种linting工具检查您在其他方法中访问的所有属性是否在__init__()
期间分配了值。这可能比为所有属性编写显式测试更有效。