zoukankan      html  css  js  c++  java
  • Python怎么去写单元测试用例去测试hello world呢

    逛着博客园,看到乙醇大佬的一篇随笔 https://www.cnblogs.com/nbkhic/p/9370446.html,于是就在想怎么测试这句hello world

    print('hello world')

    想法是修改stdout的指向到一个io.StringIO流中,然后把流中的数据与‘hello world’去比较,可是写完之后发现,程序虽然没报错,但是流中无数据写入,百思不得其解;只好换成文件流,代码如下:

    import sys
    
    
    def hi():
        print('hello world')
    
    if __name__ == '__main__':
        old = sys.stdout
    
        with open('test','w') as oFile:
            sys.stdout = oFile
            hi()
    
        sys.stdout = old
    
        with open('test','r') as oFile:
            if 'hello world' + '
    ' == oFile.readline():
                print('PASS')
            else:
                print('FAIL',file=sys.stderr)

    结果也输出了PASS

    C:UserssuneeeAppDataLocalProgramsPythonPython36python.exe E:/wangjz/PyWorkSpace/LearnPython/test.py
    PASS
    
    Process finished with exit code 0

    PS:至于比较字符串‘hello world’后面为什么要加个' ',可以看下print函数说明

    def print(*args, sep=' ', end='
    ', file=None): # known special case of print
        """
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        
        Prints the values to a stream, or to sys.stdout by default.
        Optional keyword arguments:
        file:  a file-like object (stream); defaults to the current sys.stdout.
        sep:   string inserted between values, default a space.
        end:   string appended after the last value, default a newline.
        flush: whether to forcibly flush the stream.
        """
        pass
  • 相关阅读:
    tidb3.2参数优化配置整个过程
    tidb优化配置
    mysql使用docker安装
    mysql密码规则配置-配置为简单密码123456
    goaccess日志分析器使用
    c# printDialog不显示问题
    short数组写进txt
    txt文件存储问题
    c# 调用c++dll二次总结
    程序员代码开发的自测素养
  • 原文地址:https://www.cnblogs.com/kusy/p/9468784.html
Copyright © 2011-2022 走看看