Python насмешливые атрибуты - PullRequest
       4

Python насмешливые атрибуты

0 голосов
/ 19 сентября 2018

У меня был предыдущий пост с проблемой насмешки над сокетом recv, и я столкнулся с другой проблемой в другом тесте, используя mock, которые похожи по своим ошибкам, и я думаю, что это сводится к общему неправильному пониманию mock.Итак, я делаю новое сообщение, потому что исходный вопрос более широк.

У меня есть следующий код:

import custom_lib

class classA:
    def __init__.py(self):
        self.s = socket.socket(socket.AF_INET,socket.STREAM)
        self.p = custom_lib.classB()
    def functionA:
        buf = self.s.recv.decode()
        self.p.somefunction()

И этот код не будет работать без проблем, теперь я хочу издеватьсяи socket / custom_lib в тестовом коде, и я делаю это следующим образом:

import unittest.mock
import pytest

def test_functionA:
    with mock.patch('custom_lib.ClassB.somefunction') as mock_somefunc:
        mock_somefunc.return_value = "hello"
        with mock.patch('socket.socket') as mock_socket:
            mock_socket.return_value.recv.decode.return_value = "hello123"
            A = classA()
            A.functionA()

Однако, с обеими ложными частями, он пройдет через функцию A и скажет, что эти функции / атрибуты не существуют.Я где-то читал, что нельзя смоделировать переменные, которые создаются внутри класса, но есть ли что-нибудь вокруг этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...