zoukankan      html  css  js  c++  java
  • 在VS Code中对Python进行单元测试

    在VS Code中对Python进行单元测试

    Python扩展支持使用Python的内置unittest框架以及pytestNose进行单元测试要使用pytest和Nose,必须将它们安装到当前的Python环境中(即,在pythonPath设置中标识的环境,请参阅环境)。

    使用Python:Discover Unit Tests根据当前所选测试框架的发现模式扫描项目以进行测试(请参阅测试发现。一旦发现,VS Code提供了多种运行测试的方法(请参阅运行测试)。

    单元测试输出显示在Python Test Log面板中,包括未安装测试框架时导致的错误。

    提示:一个包含各种单元测试的有用存储库,应用于不同的排序算法,是https://github.com/gwtw/py-sorting

    启用和配置测试框架

    默认情况下禁用单元测试。要启用单元测试,请将以下设置之一设置为true:

        "python.unitTest.unittestEnabled": false,
        "python.unitTest.pyTestEnabled": true,
        "python.unitTest.nosetestsEnabled": false,
    

    注意:一次只启用一个测试框架。

    上面的示例启用了pytest,使unittest和Nose禁用。

    每个框架还具有特定的配置设置,如以下部分所述:

    Unittest配置设置

    设置
    (python.unitTest。)
    默认描述
    unittestEnabled false 指定是否为单元测试启用UnitTest。
    unittestArgs ["-v", "-s", ".", "-p", "*test*.py"] 传递给unittest的参数,其中由空格分隔的每个元素是列表中的单独项。有关默认值的说明,请参见下文。
    CWD 空值 指定单元测试的可选工作目录。
    outputWindow "Python Test Log" 用于单元测试输出的窗口。
    promptToConfigure true 指定VS代码是否在发现潜在测试时提示配置测试框架。
    DEBUGPORT 3000 用于调试UnitTest测试的端口号。
    autoTestDiscoverOnSaveEnabled true 指定在保存单元测试文件时是启用还是禁用自动运行测试发现。

    UnitTest的默认参数如下:

    • -v设置默认详细程度。删除此参数以获得更简单的输出。
    • -s .指定用于发现测试的起始目录。如果您在“test”文件夹中进行了测试,则可以将其更改为-s test"-s", "test"在arguments数组中)。
    • -p *test*.py是用于查找测试的发现模式。在这种情况下,它.py是包含单词“test” 的任何文件。如果以不同的方式命名测试文件,例如在每个文件名后附加“_test”,则使用类似于*_test.py数组的相应参数的模式

    要在第一次失败时停止测试运​​行,请将fail fast选项添加"-f"到arguments数组中。

    有关完整的可用选项集,请参阅unittest命令行界面

    Pytest配置设置

    设置
    (python.unitTest。)
    默认描述
    pyTestEnabled false 指定是否为单元测试启用PyTest。
    pyTestPath "py.test" PyTest的路径。如果PyTest位于当前环境之外,请使用完整路径。
    pyTestArgs [] 传递给PyTest的参数,其中由空格分隔的每个元素都是列表中的单独项。请参阅PyTest命令行选项

    您还可以使用PyTest Configuration中pytest.ini所述文件配置pytest 

    注意 如果安装了pytest-cov coverage模块,则VS Code在调试时不会在断点处停止,因为pytest-cov使用相同的技术来访问正在运行的源代码。要防止此行为,请--no-covpyTestArgs调试测试时包括(有关更多信息,请参阅pytest-cov文档中的Debuggers和PyCharm。)

    鼻子配置设置

    设置
    (python.unitTest。)
    默认描述
    nosetestsEnabled false 指定是否为单元测试启用Nose。
    nosetestPath "nosetests" 鼻子的路径。如果Nose位于当前环境之外,请使用完整路径。
    nosetestArgs [] 传递给Nose的参数,其中由空格分隔的每个元素都是列表中的单独项。请参阅鼻子使用选项

    您还可以使用Nose配置中所述.nosercnose.cfg文件配置nose 

    测试发现

    VS Code使用当前启用的单元测试框架来发现测试。您可以使用Python:Discover Unit Tests命令随时触发测试发现使用Unittest,您可以将 python.unittest.autoTestDiscoverOnSaveEnabled设置设置为true在保存测试文件时运行测试发现。

    测试发现应用当前测试框架的arguments选项中指定的发现模式。例如,unittest的默认参数包括-s . -p *test*.py,意味着unittest以项目文件夹(-s .开头递归查找名称与*test*.pypattern(-p *test*.py匹配的所有文件您可以在之后指定不同的起始文件夹-s,和/或之后指定其他模式-p

    Pytest,它的一部分,具有用于确定其根文件夹和图案,如在所描述的算法pytest配置

    对于nose,使用-w=<folder>-m=<regex>开关指定模式匹配的起始文件夹和正则表达式(请参阅Nose选项)。

    提示:有时不会发现放置在子文件夹中的单元测试,因为无法导入此类测试文件。要使它们可导入,请尝试放置__init__.py在该文件夹中命名的空文件

    运行测试

    使用以下任何操作运行测试:

    • 选择Run Tests状态栏,然后选择一个像这样的命令Run All TestsRun Failed Unit Tests

    • 在资源管理器中右键单击文件并选择Run Unit Tests,该文件在该文件中运行测试。

    • 打开测试文件,然后选择Run Test出现在测试类或方法上方代码镜头。此命令仅运行类中的那些测试或分别运行该测试方法。

      编辑器中的Python单元测试命令

    • 命令选项板中,选择任何单元测试命令:

      命令选项板上的Python单元测试命令

    命令描述
    运行所有单元测试 在工作区及其子文件夹中搜索并运行所有单元测试。
    运行当前单元测试文件 在当前在编辑器中查看的文件中运行测试。
    运行失败的单元测试 重新运行先前测试运行中失败的任何测试。如果尚未运行任何测试,则运行所有测试。
    运行单元测试文件... 提示输入特定的测试文件名,然后在该文件中运行测试。
    运行单元测试方法...... 提示要运行的测试名称,为测试名称提供自动完成功能。
    显示单元测试输出 打开Python Test Log面板,其中包含有关传递和失败测试以及错误和跳过测试的信息。

    调试测试

    因为单元测试本身就是源代码,所以它们很容易出现代码缺陷,就像它们测试的生产代码一样。因此,您可能偶尔需要在调试器中单步执行单元测试。

    Python的:调试所有测试Python的:调试单元测试方法...命令(在命令面板和状态栏菜单)分别启动调试器的所有测试和单一的测试方法。

    下一步

      • Python环境 - 控制使用哪个Python解释器进行编辑和调试。
      • 设置参考 - 探索VS Code中与Python相关的所有设置。
  • 相关阅读:
    前端与算法 leetcode 344. 反转字符串
    JavaScript闭包使用姿势指南
    前端与算法 leetcode 48. 旋转图像
    前端与算法 leetcode 36. 有效的数独
    前端与算法 leetcode 1. 两数之和
    前端与算法 leetcode 283. 移动零
    前端与编译原理 用js去运行js代码 js2run
    前端与算法 leetcode 66. 加一
    前端与算法 leetcode 350. 两个数组的交集 II
    前端与算法 leetcode 26. 删除排序数组中的重复项
  • 原文地址:https://www.cnblogs.com/it-tsz/p/9346087.html
Copyright © 2011-2022 走看看