したがって、基本的には、eval() でごまかしてモックしようとしています。しかし、それは構文的に実行可能ではないようです。他に方法がないか知りたいですか?(私はPythonのライブラリをモックすることをよく知っています。これを解決するために使用する1〜5行のテクニックはすばらしいとは思わないでください!)
>>> import os
>>> def func(*args, **kwargs):
... print "Who knows?"
...
>>> to_assign = 'os.getcwd'
>>> os.getcwd
<built-in function getcwd>
>>> eval('os.getcwd')
<built-in function getcwd>
>>> os.getcwd = func
>>> os.getcwd()
Who knows?
>>> eval('os.getcwd') = func
File "<stdin>", line 1
SyntaxError: can't assign to function call
上に示したように、os.getcwd と eval('os.getcwd') は同じものに評価されるはずですが、eval がステートメントの宛先側にある場合、割り当てを行うことができません。
また、クロージャーを使用してネストされた関数でこれを使用しているため、exec を使用できません。
Python 2 のソリューションが望ましいですが、Python 3 のソリューションが存在する場合はそれを知っておくとよいでしょう。
ありがとう、チェンツ