Что такое
patching, почему это плохо и как сделать
хорошо — статья про Python и тестирование
кода:
Python has the power
to override any attribute on any module or class, but just because
you can doesn't mean you should. This is true in regular code, but
just as true of unittests. Many testing libraries (mock, Twisted's
trial, py.test) provide facilities for overriding some piece of
global state; you can also do so manually. Occasionally these
facilities prove invaluable, but often they are used unnecessarily.
Better alternatives are available.
...
As I've
demonstrated, patching can often be avoided by restructuring code to
be more testable. The same Python features that make patching so easy
also make avoiding patching just as easy. Given the choice, you
should avoid changing global state when testing individual components
Если в двух
словах — патчинг это замена какого либо
обьекта/глобальной переменной на свою
версию. Чтобы обойтись без патчинга,
достаточно локализовать неудачный код
и слегка отрефакторить его, добавив
параметризацию.
Читайте статью,
там все на пальцах, с примерами разьяснено.
original post http://vasnake.blogspot.com/2013/11/patching.html
Комментариев нет:
Отправить комментарий