• 在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相关的所有设置。
  • 相关阅读:
    剑指offer_24:二叉树中和为某一值的路径
    剑指offer_23:二叉搜索树的后序遍历序列
    Java基础类型大小
    旋转数组
    剑指offer_22:从上往下打印二叉树
    剑指offer_21:栈的压入、弹出序列
    剑指offer_20:包含min函数的栈
    剑指offer_19:顺时针打印矩阵
    剑指offer_18:二叉树的镜像
    redis jedis源码
  • 原文地址:https://www.cnblogs.com/it-tsz/p/9346087.html
Copyright © 2020-2023  润新知