Pteest это модуль тестирования единицы в Python. Насмешливый это способ имитировать работу сервиса в способ заменить реальную.
В этом посте я сосредоточился на насмешливом различных типах методов, присутствующих в классе.
Класс ABC был определен в файле Python Python_Class.py
class ABC: def call(self): self.static_method() ABC.class_method() self.instance_method() self._ABC__private_instance_method() ABC._ABC__private_class_method() ABC._ABC__private_static_method() @staticmethod def static_method(): print("static_method") @classmethod def class_method(cls): print("class_method") def instance_method(self): print("instance method") def __private_instance_method(self): print("private instance method") @classmethod def __private_class_method(cls): print("private class method") @staticmethod def __private_static_method(): print("private static method")
Да, я знаю, что это не так, как методы класса и статические методы должны использоваться, но это не на сегодняшней повестке дня.
В методе вызова мы видим, что существует 6 других методов. Вот где нам нужно издеваться над методами – место, где их называют/использоваться вместо того, чтобы они были определены.
Но до этого нам нужно установить 2 пакета: Pтойцы, Pтобы
from unittest.mock import Mock from python_class import ABC class TestPythonClass(): def test_all_methods(self, mocker): directory = "python_class.ABC" instance_mock = mocker.patch(f"{directory}.instance_method", return_value=Mock()) static_mock = mocker.patch(f"{directory}.static_method", return_value=Mock()) class_method_mock = mocker.patch(f"{directory}.class_method", return_value=Mock()) pvt_instance_mock = mocker.patch(f"{directory}._ABC__private_instance_method", return_value=Mock()) pvt_class_mock = mocker.patch(f"{directory}._ABC__private_class_method", return_value=Mock()) pvt_static_mock = mocker.patch(f"{directory}._ABC__private_static_method", return_value=Mock()) ABC().call() assert instance_mock.call_count == 1 assert static_mock.call_count == 1 assert class_method_mock.call_count == 1 assert pvt_instance_mock.call_count == 1 assert pvt_class_mock.call_count == 1
усадьба это прибор, который поставляется с модулем Pтой-макияна. Мы можем просто передавать его в качестве аргумента во время определения метода теста без импорта.
Таким образом, я издевался 6 различных типов методов:
- метод экземпляра
- метод класса
- Статический метод
- Метод частного экземпляра
- Метод частного класса
- Частный статический метод
Лемме знают, если я что-то пропустил, или мне нужно что-нибудь добавить.
Оригинал: “https://dev.to/suvhotta/mocking-using-pytest-210”