美文网首页
3.Test Discovery

3.Test Discovery

作者: MirrorAi | 来源:发表于2018-10-29 14:57 被阅读0次

    新增于3.2版本
    unittest支持简单的test discovery,为了适配test discovery,所有测试文件都必须是可以从项目的顶级目录导入的模块或包(包含命名空间包),这意味着所有文件名都必须是可以有效识别的。

    Test Discovery可以在TestLoader.discover()中使用,也可以在命令行中使用。最基础的命令行用法:

    cd project_directory
    python -m unittest discovery
    

    小提示:python -m unittest相当于python -m unittest discovery的简写,但在需要将参数传递给Test Discovery时,必须显式使用discovery子命令。

    discovery子命令有下列选项:
    -v,--verbose
    详细输出
    -s,--start-directory + directory
    开始查找的目录,默认为.
    -p,--pattern + pattern
    模式匹配测试文件,默认为test*.py
    -t,--top-level-directory + directory
    项目的顶级目录,默认为启动目录

    -s,-p,-t选项可以按顺序作为位置参数传入。以下两个命令行是等效的:

    python -m unittest discovery -s project_directory -p "*_test.py"
    python -m unittest discovery project_directory "*_test.py"
    

    除了使用路径作为启动目录传递,还可以使用包名,如myproject.subpackage.test。Test Discovery将会导入你提供的包名,并将它在文件系统上的位置用作启动目录。

    注意:
    Test Discovery是通过导入的方式加载测试。一旦Test Discovery找到了指定启动目录中的所有测试文件,它就会将路径转换为要导入的包名。举个例子:foo/bar/baz.py会被转换成foo.bar.baz。

    如果你在全局安装了包,并在包的副本上尝试进行Test Discovery,那么导入可能使用了错误的位置。这种情况发生的时候,Test Discovery会警告并退出。

    如果你提供的启动目录是包名,而不是目录的路径,则Test Discovery会假定它从中导入的位置是你想要的位置,你将不会收到警告。

    测试模块和包可以通过load_tests协议自定义Test Discovery的加载和发现。

    Test Discovery支持命名空间包(更新于3.4)

    相关文章

      网友评论

          本文标题:3.Test Discovery

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