Почему после исправления моего вывода в «mock_stdout» с использованием фиктивных тестов и оператора «print» вывод не печPython

Программы на Python
Ответить
Anonymous
 Почему после исправления моего вывода в «mock_stdout» с использованием фиктивных тестов и оператора «print» вывод не печ

Сообщение Anonymous »

Я пытаюсь запустить модульные тесты для определенной функции и пытаюсь использовать макетные тесты в Python. Тем не менее, он работает так, как ожидалось.
Операторы печати моей функции self.sm.do() выполняются, и я получаю желаемый результат в консоли.Но когда я делаю то же самое, исправляя его вock_stdout и затем запуская print(mock_stdout), я не получаю никаких результатов.
Как это исправить? ?

Код: Выделить всё

import io
import unittest
from unittest.mock import patch
from stack_machine import StackMachine, SMState

class TestStackMachine(unittest.TestCase):
def setUp(self):

self.sm = StackMachine()

def test_instance(self):
""" Essential: Test class instantiation """
sm = StackMachine()
self.assertIsInstance(self.sm, StackMachine)

@patch('sys.stdout', new_callable=io.StringIO)
def test_with_patch(self, mock_stdout):
inp_list = [(0,0,0,0,0,1), #push 1
(0,0,1,0,1,0), #push 10
(0,0,1,0,0,1), #push 9
(0,0,0,1,1,1), #push 7
(0,0,1,0,0,0), #push 8
(0,0,1,1,1,1)] #push 15

out_exp = (0,0,0,0,1,1,1,1) #15
len_exp = 6

for elem in inp_list:
self.sm.do(elem)

self.assertEqual(self.sm.top(), out_exp)
self.assertEqual(len(self.sm.stack), len_exp)
print(mock_stdout.getvalue())
#I get no outputs here

def test_without_patch(self):
inp_list = [(0,0,0,0,0,1), #push 1
(0,0,1,0,1,0), #push 10
(0,0,1,0,0,1), #push 9
(0,0,0,1,1,1), #push 7
(0,0,1,0,0,0), #push 8
(0,0,1,1,1,1)] #push 15

out_exp = (0,0,0,0,1,1,1,1) #15
len_exp = 6

for elem in inp_list:
self.sm.do(elem)

self.assertEqual(self.sm.top(), out_exp)
#print(mock_stdout.getvalue())
self.assertEqual(len(self.sm.stack), len_exp)
#my print statements from the called function are executed here
if __name__ == '__main__':
unittest.main()

Я пытался установить buffer = False, но все равно не работает

Подробнее здесь: https://stackoverflow.com/questions/792 ... -a-print-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»