Я ищу способ проверить количество аргументов, которые данная функция принимает в Python. Целью является создание более надежного метода исправления моих классов для тестов. Итак, я хочу сделать что-то вроде этого:Есть ли способ проверить подпись функции в Python?
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!
Спасибо.
"заплат мои классы для испытаний"? Почему вы не используете макетные объекты? http://python-mock.sourceforge.net/? –
Я новичок в использовании mocks. Я «рос», ступив и исправляя. Я получаю практику и выясняю, когда использовать это, но в то же время у меня все еще есть проекты, которые нужно закончить, и тесты для написания :). – mjumbewu