在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 Test Log面板,其中包含有关传递和失败测试以及错误和跳过测试的信息。

调试测试

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

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

下一步

    • Python环境 - 控制使用哪个Python解释器进行编辑和调试。
    • 设置参考 - 探索VS Code中与Python相关的所有设置。

在VS Code中对Python进行单元测试的更多相关文章

  1. VS Code中配置python版本以及Python多版本

    VS Code中配置python版本VS Code十分方便配置python的版本:可以选在在本地setting.json或者全局setting.json文件中配置:python.pythonPath在 ...

  2. 微软发布 Pylance:改善 VS Code 中的 Python 体验

    原标题:微软发布 Pylance:改善 VS Code 中的 Python 体验 来源:开源中国 微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS ...

  3. 在Visual Studio Code 中配置Python 中文乱码问题

    在Visual Studio Code 中配置Python 中文乱码问题 方法一:直接代码修改字符集 添加前四行代码 import io import sys #改变标准输出的默认编码 sys.std ...

  4. 在visual studio code 中配置python以及解决中文乱码问题

    安装好 visual stuido code (下面简称 “ VSC ”)后,要想使用它运行调试 python 代码还需要做一些工作以解决下列问题: 搭建 python 环境 print 打印中文出现 ...

  5. 【vue】在VS Code中调试Jest单元测试

    在VS Code中调试Jest单元测试 添加调试任务 打开 vscode launch.json 文件,在 configurations 内加入下面代码 "configurations&qu ...

  6. VS Code中python代码自动格式化 代码自动检查

    VS Code菜单栏中依次打开 File—Preferences—Settings,搜索框中搜索“python.formatting.provider”, 然后在下拉菜单中选择autopep8,yap ...

  7. Python的单元测试(二)

    title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...

  8. Python自动单元测试框架

    原文链接:http://www.ibm.com/developerworks/cn/linux/l-pyunit/ 软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写 ...

  9. [转] Python自动单元测试框架

    一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施.正像软件熵(software ...

随机推荐

  1. luogu P1072 $Hankson$ 的趣味题

    这里提供两种做法 sol 1 考虑两个数\(A,B\)和\(C=gcd(A,B),D=lcm(A,B)\)的关系 设\(S=\{2,3,5...P_n\}\)为质数集合\(p_{x,i}\)表示\(x ...

  2. Java基础中的一些概念理解

    同步 和 异步区别 同步和异步通常用来形容一次方法的调用. 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为.而异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用 ...

  3. Python 入门基础18 --re模块+内存管理

    今日内容: 1.垃圾回收机制 2.re模块 一.垃圾回收机制 在计算机中,不能被程序访问到的数,称之为垃圾 1.1 引用计数 引用计数用来记录值的内存地址被记录的次数 每引用一次就对标记 +1 操作 ...

  4. iOS视频开发经验

    iOS视频开发经验 手机比PC的优势除了便携外,我认为最重要的就是可以快速方便的创作多媒体作品.照片分享,语音输入,视频录制,地理位置.一个成功的手机APP从产品形态上都有这其中的一项或多项,比如in ...

  5. RNN(1) ------ “理解LSTM”(转载)

    原文链接:http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这 ...

  6. 写好shell脚本的13个技巧【转】

    有多少次,你运行./script.sh,然后输出一些东西,但却不知道它刚刚都做了些什么.这是一种很糟糕的脚本用户体验.我将在这篇文章中介绍如何写出具有良好开发者体验的 shell 脚本. 产品的最终用 ...

  7. PHP查看编译参数

    PHP查看编译参数 [root@test ~]# php -i|grep configure Configure Command => './configure' '--prefix=/usr/ ...

  8. ES系列三、基本知识准备

    一.基础概念 1.索引 索引(index)是elasticsearch的一个逻辑存储,可以理解为关系型数据库中的数据库,es可以把索引数据存放到一台服务器上,也可以sharding后存到多台服务器上, ...

  9. 【bzoj2653】【middle】【主席树+二分答案】

    Description 一个长度为 n 的序列 a ,设其排过序之后为 b ,其中位数定义为 b[n/2] ,其中 a,b 从 0 开始标号 , 除法取下整. 给你一个长度为 n 的序列 s .回答 ...

  10. 使用Eclipse创建Web Services

    正文: 项目源文件: 百度云盘/博客园/project/wsServerExample/wsServerExample.rar 参考文献: http://www.ibm.com/developerwo ...