zoukankan      html  css  js  c++  java
  • Unittest命令行执行测试、执行测试发现操作实例

    #coding=utf8
    '''
    可以通过命令行运行:模块、类、或者单个测试方法,具体的操作是如下:
    运行测试模块:python -m unittest test_module1 test_module2
    运行测试类:python -m unittest test_module.TestClass
    运行测试方法:python -m unittest test_module.TestClass.test_method
    可以在一个列表中添加需要运行的模块名、类名、方法名。
    可以通过使用-v参数获取更详细的测试信息:python -m unittest -v test_module
    可以通过-h参数查看命令行所有参数:python -m unittest -h
    命令行参数:
    -b --buffer
    在测试运行期间标准输出流和标准错误流被缓存。输出通过测试信息。
    输出在测试失败或错误时正常回显,并添加到失败消息中。
    -c --catch
    Ctrl+C在测试运行期间等待当前测试结束,然后报告到目前为止的所有结果。
    第二个Ctrl+C会引发KeyboardInterrupt异常。
    -f --failfast
    在第一个错误或故障时停止测试运行。
    命令行也可用于测试发现(Test Discovery),用于运行项目中的所有测试或仅用于子集。
    Unittest支持简单的测试发现(Test Discovery)。为了与测试发现兼容,
    所有测试文件必须是可从项目的根目录导入的模块或包(这意味着它们的文件名必须是有效的标识符)。
    Test Discovery是通过TestLoader.discover()实现,也可以通过命令行实现。
    基本的命令行用法:
    cd project_directory #进入项目目录根目录
    python -m unittest discover #执行命令
    discover子命令的参数如下:
    -v , --verbose
    详细输出
    -s , --start-directory directory
    执行发现的起始目录(directory),默认是当前目录(.)
    -p, --pattern pattern
    匹配测试文件的模式(pattern),默认是test*.py
    -t, --top-level-directory directory
    项目(directory)的目的的根目录(默认是起始目录)
    -s、-p、-t命令可以在一个命令行中联合使用。下面两个命令是等价的:
    python -m unittest discover -s project_directory -p "*_test.py"
    python -m unittest discover project_directory "*_test.py"
    作为一个路径,可以传递一个包名称,例如myproject.subpackage.test作为开始目录。
    然后将导入提供的软件包名称,并将其在文件系统上的位置用作开始目录。
    注意:测试发现通过导入来加载测试。一旦测试发现已经从指定的开始目录中找到所有测试文件,
    它将路径转换为要导入的包名称。例如foo / bar / baz.py将导入为foo.bar.baz。
    如果有全局安装的软件包,并尝试在软件包的不同副本上进行测试发现,
    那么导入可能发生在错误的位置。如果发生这种情况,测试发现将警告并退出。
    如果提供开始目录作为包名称而不是目录的路径,则发现假定它从其导入的任何位置是想要的位置,因此不会得到警告。
    测试模块和包可以通过load_tests协议自定义测试加载和发现。
    '''
    import os
    #进入到TestHello.py路径下
    os.chdir(".//TestSuit_01")
    print os.getcwd()
    print '''可以通过命令行测试信息'''
    #运行测试模块TestHello.py
    os.system("python -m unittest TestHello")
    #运行测试类TestHello
    os.system("python -m unittest TestHello.TestHello")
    #运行测试方法
    os.system("python -m unittest TestHello.TestHello.test_Hello")
    print "#"*50
    print

    print '''可以通过使用-v参数获取更详细的测试信息'''
    #运行测试模块TestHello.py
    os.system("python -m unittest -v TestHello")
    #运行测试类TestHello
    os.system("python -m unittest -v TestHello.TestHello")
    #运行测试方法
    os.system("python -m unittest -v TestHello.TestHello.test_Hello")
    print "#"*50
    print

    print '''可以通过-h参数查看命令行所有参数:python -m unittest -h'''
    os.system("python -m unittest -h")
    print "#"*50
    print

    print "命令行参数:-b -c -f"
    #运行测试模块TestHello.py
    os.system("python -m unittest -b TestHello")
    #运行测试类TestHello
    os.system("python -m unittest -c TestHello.TestHello")
    #运行测试方法
    os.system("python -m unittest -f TestHello.TestHello.test_HelloType")
    print "#"*50
    print

    #使用测试发现命令执行所有测试
    print "使用测试发现执行项目中的所有测试"
    #进入到UnttestPro
    os.chdir("../")
    print "The current path:",os.getcwd()
    #全部使用默认的参数
    os.system("python -m unittest discover ")

    原文:https://blog.csdn.net/henni_719/article/details/56835833

  • 相关阅读:
    Linux Commands
    sizeof操作符的使用详解
    在Vim中使用cscope
    MySQL学习笔记
    Online judge for leetcode
    使用Vim,让你工作效率更高
    Ext JS笔记
    安装J2EE开发环境
    这些都是什么啊
    QrCode二维码的实现原理
  • 原文地址:https://www.cnblogs.com/dreamhighqiu/p/11004335.html
Copyright © 2011-2022 走看看