-1

したがって、基本的には、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 のソリューションが存在する場合はそれを知っておくとよいでしょう。

ありがとう、チェンツ

4

1 に答える 1