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
  • 相关阅读:
    华为机试:字符串翻转
    华为机试:数字颠倒
    华为机试:字符个数统计
    华为机试:提取不重复的整数
    华为机试:取近视值
    华为机试:进制转换
    华为机试:字符串分隔
    华为机试:明明的随机数
    华为机试:字符串最后一个单词的长度
    网易:相反数
  • 原文地址:https://www.cnblogs.com/kusy/p/9468784.html
Copyright © 2011-2022 走看看