A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/python/python-testing-output-to-stdout/ below:

Python | Testing Output to stdout

Python | Testing Output to stdout

Last Updated : 12 Jun, 2019

Testing is a critical part of development as there is no compiler to analyze the code before Python executes it. Given a program that has a method whose output goes to

standard Output (sys.stdout)

. This almost always means that it emits text to the screen. One likes to write a test for the code to prove that, given the proper input, the proper output is displayed. Using the

unittest.mock module’s patch()

function, it’s pretty simple to mock out

sys.stdout

for just a single test, and put it back again, without messy temporary variables or leaking mocked-out state between test cases.

Code #1 : Example Python3 1==
def urlprint(protocol, host, domain):
    url = '{}://{}.{}'.format(protocol, host, domain)
    print(url)

The built-in

print

function, by default, sends output to

sys.stdout

. In order to test that output is actually getting there, it is to be mocked out using a stand-in object, and then make assertions about what happened. Using the

unittest.mock

module’s

patch()

method makes it convenient to replace objects only within the context of a running test, returning things to their original state immediately after the test is complete.

Code #2 : Test code for the above code Python3 1==
from io import StringIO
from unittest import TestCase
from unittest.mock import patch
import mymodule

class TestURLPrint(TestCase):
    
    def test_url_gets_to_stdout(self):
        protocol = 'http'
        host = 'www'
        domain = 'example.com'
        expected_url = '{}://{}.{}\n'.format(protocol, host, domain)
        
        with patch('sys.stdout', new = StringIO()) as fake_out:
            mymodule.urlprint(protocol, host, domain)
            self.assertEqual(fake_out.getvalue(), expected_url)
 

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4