zoukankan      html  css  js  c++  java
  • unittest在命令行中执行

    unittest 模块可以通过命令行运行模块、类和独立测试方法的测试:

    python -m unittest test_module1 test_module2
    python -m unittest test_module.TestClass
    python -m unittest test_module.TestClass.test_method

    你可以传入模块名、类或方法名或他们的任意组合。

    同样的,测试模块可以通过文件路径指定:

    python -m unittest tests/test_something.py


    这样就可以使用 shell 的文件名补全指定测试模块。所指定的文件仍需要可以被作为模块导入。路径通过去除 '.py' 、把分隔符转换为 '.' 转换为模块名。若你需要执行不能被作为模块导入的测试文件,你需要直接执行该测试文件。

    在运行测试时,你可以通过添加 -v 参数获取更详细(更多的冗余)的信息。

    python -m unittest -v test_module

    当运行时不包含参数,开始 探索性测试

    python -m unittest

    用于获取命令行选项列表:

    python -m unittest -h

    在 3.2 版更改: 在早期版本中,只支持运行独立的测试方法,而不支持模块和类。

    命令行选项:

    -b, --buffer

    在测试运行时,标准输出流与标准错误流会被放入缓冲区。成功的测试的运行时输出会被丢弃;测试不通过时,测试运行中的输出会正常显示,错误会被加入到测试失败信息。

    -c, --catch
    当测试正在运行时, Control-C 会等待当前测试完成,并在完成后报告已执行的测试的结果。当再次按下 Control-C 时,引发平常的 KeyboardInterrupt 异常。

    See Signal Handling for the functions that provide this functionality.

    -f, --failfast
    当出现第一个错误或者失败时,停止运行测试。

    -k
    只运行匹配模式或子串的测试方法和类。可以多次使用这个选项,以便包含匹配子串的所有测试用例。

    包含通配符(*)的模式使用 fnmatch.fnmatchcase() 对测试名称进行匹配。另外,该匹配是大小写敏感的。

    模式对测试加载器导入的测试方法全名进行匹配。

    例如,-k foo 可以匹配到 foo_tests.SomeTest.test_something 和 bar_tests.SomeTest.test_foo ,但是不能匹配到 bar_tests.FooTest.test_something 。

    --locals
    在回溯中显示局部变量。

    3.2 新版功能: 添加命令行选项 -b, -c 和 -f 。

    3.5 新版功能: 命令行选项 --locals 。

    3.7 新版功能: 命令行选项 -k 。

    命令行亦可用于探索性测试,以运行一个项目的所有测试或其子集。

    探索性测试
    3.2 新版功能.

    Unittest支持简单的测试搜索。若需要使用探索性测试,所有的测试文件必须是 modules 或 packages (包括 namespace packages )并可从项目根目录导入(即它们的文件名必须是有效的 identifiers )。

    探索性测试在 TestLoader.discover() 中实现,但也可以通过命令行使用。它在命令行中的基本用法如下:

    cd project_directory
    python -m unittest discover

    注解 方便起见, python -m unittest 与 python -m unittest discover 等价。如果你需要向探索性测试传入参数,必须显式地使用 discover 子命令。

    discover 有以下选项:

    -v, --verbose
    更详细地输出结果。

    -s, --start-directory directory
    开始进行搜索的目录(默认值为当前目录 . )。

    -p, --pattern pattern
    用于匹配测试文件的模式(默认为 test*.py )。

    python3 -m unittest discover -s cases/screen_recorder_test_cases/screen_cases/ -p "*001*.py"

    -t, --top-level-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 。你提供的包名会被导入,它在文件系统中的位置会被作为起始目录。

    没伞的孩子,就要学会在雨中奔跑!
  • 相关阅读:
    20162304 2017-2018-1 《程序设计与数据结构》第十周学习总结
    20162304 2017-2018-1 《程序设计与数据结构》第九周学习总结
    20162304 2017-2018-1 《程序设计与数据结构》第八周学习总结
    20162302 2017-2018-1《程序设计与数据结构》课程总结
    20162302 实验五《数据结构综合应用》实验报告
    20162302 实验四《图的实现与应用》实验报告
    20162302 《程序设计与数据结构》第十一周学习总结
    20162302 《程序设计与数据结构》第十周学习总结
    20162302 实验三《查找与排序》实验报告
    20162302 《程序设计与数据结构》第九周学习总结
  • 原文地址:https://www.cnblogs.com/mikigo/p/13334753.html
Copyright © 2011-2022 走看看