Pytest mock perforce run - PullRequest
       6

Pytest mock perforce run

0 голосов
/ 14 июля 2020

Я ищу способ имитировать метод класса perforce как метод экземпляра внутри моего класса.

Вот что у меня есть

my_test.py

import P4

class MyTest():
    def __init__(self):
        self.p4 = P4.P4()
        self.p4.connect()
    def run(self):
        self.files = self.p4.run('files', 'my-files-path')

По сути, я не хочу, чтобы мой модульный тест отправлял триггерное реальное принудительное соединение. Вот мой тестовый код.

test_my_test.py

from my_test import MyTest
from mock import patch
import P4

class Test():
    def test_answer(self):
        mock_p4_return = [
            {'depotFile': '//path1/'},
            {'depotFile': '//path1/'}, 
        ]
        my_test = MyTest()
        with patch.object(P4, 'run', return_value=mock_p4_return):
            my_test.run()
            assert my_test.files == mock_p4_return

Но я получил эту ошибку

AttributeError: не имеет атрибута run

1 Ответ

0 голосов
/ 15 июля 2020

Поскольку модуль, который вы тестируете, относится к P4.P4 (класс P4 внутри модуля P4), вам необходимо исправить P4.P4 в вашем тесте.

Если ваш код сделал :

from P4 import P4

, тогда вам нужно будет использовать только P4 в обоих местах.

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