我想弄清楚是否有办法(单元测试)验证该属性和 setter 是否实际被调用来设置 name 属性。
class DummyName:
def __init__(self):
self.name = ''
@property
def name(self):
return self.name
@name.setter
def name(self, name):
if not isinstance(name, basestring):
raise Exception('Name must be a string.')
self.name = name
Run Code Online (Sandbox Code Playgroud)
试图做这样的事情......
@mock.patch.object(DummyName, 'name', new_callable=PropertyMock)
def testNameProperty(self, mock_name):
MockName = Mock()
mock_name.return_value = MockName
dummyName = DummyName()
dummyName.name = 'test_name'
# assert setter is called to set the name
# assert name is called to get the name
# assert name is 'test_name'
Run Code Online (Sandbox Code Playgroud)
似乎从未访问过 name() 和 setter。谁有更好的主意?谢谢!
有没有更好的方法来写这个?markdown是一个 StringIO
coverage_hash_arr = [
{
"Module": "Mobile",
"name": "Sheila Chapman",
"age": 21
},
{
"Module": "Web",
"name": "Hendricks Walton",
"age": 40
},
{
"Module": "Misc",
"name": "Torres Mcdonald",
"age": 39
}
]
coverage_hash_arr.each do |the_hash|
markdown << "------- Status on #{the_hash[:Module]} -------\n"
the_hash.delete(:Module)
the_hash.each {|key, value| markdown << "- #{key}: #{value} \n"}
markdown << "----------------------------------------------\n"
end
Run Code Online (Sandbox Code Playgroud)
我试过了,它似乎有效,但我想知道是否有更好的方法(递归)?
coverage_hash_arr.collect do |the_hash|
the_hash.each do |key,value|
key == :Module ? markdown << "--------- Status for #{value} ----------\n" : markdown << …Run Code Online (Sandbox Code Playgroud)