Рубрики
Без рубрики

Издеваться с использованием Pтойца

Pytest – это модуль тестирования единицы в Python. Издевание – это способ имитировать работу сервиса в … Помечено с Python, начинающим, не в порядке, Pteest.

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”