小编use*_*871的帖子

Python 单元测试类属性

我想弄清楚是否有办法(单元测试)验证该属性和 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。谁有更好的主意?谢谢!

python python-unittest python-unittest.mock

6
推荐指数
1
解决办法
4104
查看次数

Ruby 高效的每个循环

有没有更好的方法来写这个?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)

ruby ruby-on-rails

0
推荐指数
1
解决办法
83
查看次数