Во время тестирования мне нужно издеваться над объектом. В настоящее время я использую 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»?