美文网首页
python 在stdout上输出

python 在stdout上输出

作者: 孙广宁 | 来源:发表于2022-06-08 22:44 被阅读0次
    14.1 我们的程序中有一个方法会将输出发送到标准输出上,我们如何将合适的值答应到标准输出上
    • 使用 unittest.mock 模块的 patch函数,可以为单独的测试用例模拟输出大stdout上。不必使用临时变量
    def urlprint(protocol,host,domain):
        url = '{}://{}.{}'.format(protocol,host,domain)
        print(url)
    
    urlprint("http","localhost","com")
    
    • 输出为
    [root@apollo gnsun]# python mymodule.py 
    http://localhost.com
    
    • 内建的print函数会将输出打印到sys.stdout
    • 为了测试输出确实会打印到stdout上,可以利用一个对象作为stdout的替身来模拟这种情况,然后对产生的结果进行断言
    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 ='localhost'
            domain ='com'
            expected_url = '{}://{}.{}\n'.format(protocol,host,domain)
    
            with patch('sys.stdout',new=StringIO()) as fake_out:
                mymodule.urlprint(protocol,host,domain)
                print(self.assertEqual(fake_out.getvalue(),expected_url))
    
    • 在测试完成后,会立刻将所有的东西返回到它的原始状态上。

    相关文章

      网友评论

          本文标题:python 在stdout上输出

          本文链接:https://www.haomeiwen.com/subject/ixrpmrtx.html