Как смоделировать объект при тестировании python с помощью PyTest? - PullRequest
0 голосов
/ 07 февраля 2020

Во время тестирования мне нужно издеваться над объектом. В настоящее время я использую Pytest и monkeypatch для насмешек.

пример функции:

def isGccInstalled():
    gccInstallationFound = False
    command = ['gcc', '-v']
    process = subprocess.Popen(command, bufsize=1, universal_newlines=True, 
                               stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    if process.stdout.readline:
        gccInstallationFound = True        
    return gccInstallationFound 

Мой тест для функции:

def mock_subprocess_Popen(*args, **kwargs):
    return

def test_getSwBlockType(monkeypatch):
    monkeypatch.setattr(subprocess, "Popen", mock_subprocess_Popen)
    assert isGccInstalled() == "False"

Мне нужно каким-то образом смоделировать процесс Объект и написать свою собственную строку в process.stdout.readline. Я знаю, что могу смоделировать отдельные переменные, используя monkeypatch.setattr, но я не знаю, как имитировать объекты или даже объекты, которые наследуются от других классов. Есть ли способ сказать моему макету вернуть фиктивную структуру данных с доступным «process.stdout.readline»?

...