Ich suche nach einer Möglichkeit, die Anzahl der Argumente zu überprüfen, die eine bestimmte Funktion in Python übernimmt. Der Zweck besteht darin, eine robustere Methode zu finden, meine Klassen für Tests zu patchen. Also, ich möchte so etwas tun:Gibt es eine Möglichkeit, die Signatur einer Funktion in Python zu überprüfen?
class MyClass (object):
def my_function(self, arg1, arg2):
result = ... # Something complicated
return result
def patch(object, func_name, replacement_func):
import new
orig_func = getattr(object, func_name)
replacement_func = new.instancemethod(replacement_func,
object, object.__class__)
# ...
# Verify that orig_func and replacement_func have the
# same signature. If not, raise an error.
# ...
setattr(object, func_name, replacement_func)
my_patched_object = MyClass()
patch(my_patched_object, "my_function", lambda self, arg1: "dummy result")
# The above line should raise an error!
Danke.
"meine Klassen für Tests Patchen"? Warum benutzt du keine Mock-Objekte? http://python-mock.sourceforge.net/? –
Ich bin neu mit Mocks. Ich "wuchs" Stubben und Flicken. Ich werde üben und herausfinden, wann ich welches verwenden soll, aber in der Zwischenzeit habe ich noch Projekte zu beenden und Tests zu schreiben :). – mjumbewu