Как можно получить правило CA1726 FxCop проигнорировать предпочтительный термин?

fixture 1

Начиная с первого, это создает фиксированный файл данных. Макет (вводит в заблуждение) только жив во время функции фикстуры, потому что он использует return.

Чтобы примерно сказать, что происходит для этого:

  • pytest замечает, что ваш прибор используется для тестовой функции
  • он вызывает функцию прибора
    • макет decorator запускает патч
    • , фиктивный декоратор вызывает вашу фактическую функцию (которая возвращает значение)
    • , фиктивный декоратор отменяет патч
  • pytest замечает его не был генератором, и это значение вашего прибора

приспособление 2

второй по поведению идентичен первому, за исключением того, что он использует форму менеджера контекста [111 ] вместо декоратора. лично мне не нравится форма декоратора, но это только я: D

fixture 3

(сначала, прежде чем я продолжу, pytest.yield_fixture является устаревшим псевдонимом для pytest.fixture - - вы можете просто использовать @pytest.fixture)

Третий делает что-то другое! Патч жив на протяжении всего теста, потому что он «уступил» во время фиксации. Это своего рода способ создать установку + демонтаж все в одном. Вот пример выполнения:

  • Pytest замечает, что ваш прибор используется для тестовой функции
  • Pytest вызывает функцию прибора
    • , так как это генератор, он сразу возвращается без выполнения кода
  • pytest замечает, что он является генератором, вызывает next(...) для него
    • , что приводит к выполнению кода до yield, а затем «делает паузу» , Вы можете думать об этом как о совместной подпрограмме
    • , называемой __enter__ из mock, делающей патч активным
    • , значение, которое yield ed используется как значение прибора
  • pytest затем выполняет вашу тестовую функцию
  • pytest, затем снова вызывает next(...) на генераторе для исчерпания прибора
    • __exit__ это оператор with, отменяющий патч

, какой выбрать?

лучший ответ - , это зависит . Поскольку 1 и 2 функционально эквивалентны, это зависит от личных предпочтений. Выберите 3. Если вам нужно, чтобы патч был активным на протяжении всего теста. И не используйте pytest.yield_fixture, просто используйте pytest.fixture.

8
задан Cœur 4 April 2017 в 09:54
поделиться

1 ответ

Я ответил на свой собственный вопрос.

Оказывается, что список предпочтительных терминов перечислен в файле CustomDictionary.xml, который находится в каталоге установки FxCop (C:\Program Files\Microsoft FxCop 1.36\CustomDictionary.xml). Существует раздел <Dictionary> <Слова> <Удержанные от использования>, который содержит много <Термин> элементы. Просто удаление тех, которых я не хочу, добилось цели.

6
ответ дан 5 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

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