Когда вызываются только исправленные методы класса? [Дубликат]

Вы можете попытаться использовать гиперссылку в качестве родителя, а затем изменить внутренние элементы при наведении. Например:

a.active h1 {color:red;}

a.active:hover h1 {color:green;}

a.active h2 {color:blue;}

a.active:hover h1 {color:yellow;}

Таким образом вы можете изменить стиль во множестве внутренних тегов на основе опрокидывания родительского элемента.

2
задан FearlessFuture 25 October 2016 в 19:23
поделиться

1 ответ

Это обсуждается в разделе документации 26.6.3.7. Копирование с изменяемыми аргументами .

К сожалению, у них действительно нет элегантного решения проблемы! Рекомендуемое обходное решение - копирование элементов из изменяемых аргументов с помощью side_effect.

Если вы предоставляете функцию side_effect для макета, то side_effect будет вызываться с теми же аргументами, что и mock. Это дает нам возможность скопировать аргументы и сохранить их для последующих утверждений.

На мой взгляд, это довольно сложно реализовать. Если вам нужна возможность в нескольких местах, вы можете предпочесть подкласс Mock и добавить функцию напрямую:

from copy import deepcopy

class CopyingMock(MagicMock):
    def __call__(self, *args, **kwargs):
        args = deepcopy(args)
        kwargs = deepcopy(kwargs)
        return super(CopyingMock, self).__call__(*args, **kwargs)

2017: теперь она доступна в стороннем дистрибутиве (pip install copyingmock).

>>> from copyingmock import CopyingMock
>>> mock = CopyingMock()
>>> list_ = [1,2]
>>> mock(list_)
<CopyingMock name='mock()' id='4366094008'>
>>> list_.append(3)
>>> mock.assert_called_once_with([1,2])
>>> mock.assert_called_once_with(list_)

AssertionError: Expected call: mock([1, 2, 3])
Actual call: mock([1, 2])
3
ответ дан wim 19 August 2018 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: