小编mac*_*acm的帖子

在 python Mock 中向 side_effects 添加额外参数

from unittest.mock import patch

def get_title():
    return 'title'


def get_msg():
    return 'msg'


def do_log(title, msg):
    sys.stderr.write(get_title(),
                     get_msg())
    return


def myfunction():
    title = get_title()
    msg = get_msg()
    do_log(title, msg)


def my_new_do_log(*args, **kwargs):
    '''
    we know, args = title, msg
    But I want add EXTRA arguments, 
    like handler (from caller / from controller)
    '''
    sys.stderr.write(get_title(),
                     get_msg(),
                     handler.get_author_from_handler()
                     )
    # Note: handler is argument from controller!


@patch('do_log')
def controller(handler, mock_do_log):
    mock_do_log.side_effect = my_new_do_log
    myfunction()


if __name__ == '__main__':
    controller(handler)
Run Code Online (Sandbox Code Playgroud)

那么如何将“处理程序”(一个额外的参数)传递给 my_new_do_log 呢?

如果我尝试类似的事情: …

mocking python-3.x

2
推荐指数
1
解决办法
1953
查看次数

如何将字符串点表示法转换为嵌套对象?

我想将像“abcd”这样的点符号字符串转换为对象。如果对象不存在,我想创建一个空的。

var str = 'a.b.c.d'
var obj = {}

// so ...

function dotToObj(obj, str) {
    // something 
    obj[?] = obj[?] || {}            
     }

// If object doesnt exist so create a empty object.

var rsp = dotToObj(obj, str);


console.log(rsp)

// Excpect:
Object {a: Object}
    a: Object
        b: Object
            c: Object
                d: Object
                __proto__: Object
            __proto__: Object
        __proto__: Object
    __proto__: Object
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
1
解决办法
562
查看次数

标签 统计

javascript ×1

mocking ×1

python-3.x ×1