我有一个名为www.example.com的python文件AllTests.py,如下所示:
import unittest
from SomeWonderfulTest import SomeWonderfulTestCase
def runAllTestsNow():
theTestSuite = unittest.TestSuite()
theTestSuite.addTest(unittest.makeSuite(SomeWonderfulTestCase)
return theTestSuite
if __name__ == "__main__":
unittest.main(defaultTest='runAllTestsNow')
我可以在命令行中运行此命令,如下所示:
python -m unittest AllTests
但是,我想使用Spyder IDE来调试一些问题。我知道要在Spyder中指定命令行选项,我可以转到“运行”-〉“常规设置”-〉“命令行选项”。但是,当我尝试将“-m unittest”放入这些选项时,我收到一个错误消息,称“无法识别选项-m”。它似乎试图将参数发送到AllTests.py文件,而不是python。
如何设置Spyder以调试这些单元测试?
7条答案
按热度按时间sirbozc51#
您可以使用模块spyder-ide/spyder-unittest。
https://github.com/spyder-ide/spyder-unittest
要安装它,请用途:
然后重新启动你的电脑。打开Spyder。在右上角你会发现一个新的标签:公寓测试.单击它.您将看到一个带有标签运行测试得绿色箭头.这是您将用于运行测试得按钮.
当您第一次点击箭头时,会弹出一个窗口。您可以通过点击设置齿轮(此面板的左上角)-〉配置来访问此弹出窗口。
选择测试框架。我假设你已经安装了
unitest
。你应该有它作为一个选项。其他选项是py.test
nose
。在中选择脚本
test_<name>.py
所在的文件夹。最佳实践表明,您应该在要测试的脚本所在的文件夹中创建一个名为unittests
的文件夹:记住命名约定,所有包含测试的脚本都应该有一个以
tests_
开头的名字。你的脚本test_.py应该看起来像这样:所有的测试方法都应该有一个以
test_
开头的名称。检查:https://docs.python-guide.org/writing/tests/以了解更多信息。
可以使用spyde IDE中的调试工具调试测试脚本
5lhxktic2#
这篇文章有点老了,但我一直在使用以下内容(由https://stackoverflow.com/users/9450152/%e3%82%ae%e3%83%a7%e3%83%bc%e3%83%a0发布):
在iPython控制台中:
开头的感叹号使您可以直接访问shell。
我发现你真正需要的是:
这将从当前工作目录中发现模式为“test*.py”的所有测试文件。当前工作目录显示在工具栏中,或者您可以在ipython控制台中键入以下内容:
有时候我会运行一个测试文件(通过按F5键或单击Run箭头)。这会将工作目录更改为该文件所在的目录。然后上面的命令将只从该目录开始搜索测试文件(顺便说一句,我浪费了很多时间来尝试找出这个问题)。您可以从工具栏更改工作目录(单击向上箭头)或用途:
在控制台中重复,直到到达项目目录。
r7xajy2e3#
在iPython控制台中:
开头的感叹号使您可以直接访问shell。
pnwntuvh4#
目前Spyder和它的单元测试插件中还没有这个功能。项目的bug跟踪器中有一张票要求使用这个功能,大约一年了,没有明显的进展:https://github.com/spyder-ide/spyder-unittest/issues/126
作为一种解决方法,您可以使用以下脚本:
保存它,例如保存为“main_pytest.py”,然后在Spyder中运行它。不需要调试。调试器将自动停止在pytest.main()上。继续执行以跳转到您自己的断点。
它使用标准的Python调试器来强制调试。https://docs.python.org/3/library/pdb.html
这种方法的优点是不需要修改实际代码。
另外,您可以使用文档(https://docs.pytest.org/en/latest/usage.html)中的所有可能选项作为pytest.main()的参数。
zbq4xfa05#
显然,要么你不能,要么它是坏的,因为有an open issue在spyder-ide回购关于这一点,因为它站在今天2020年1月9日。
我正在使用spyder-unittest,作为变通方法,我将使用debug. so直接从测试文件调用测试函数,例如,在spyder-unittest的情况下,如果test_file.py包含以下测试函数
然后在此函数之后直接调用此测试函数,例如
并在其上放置一个断点。现在,不要将您的测试文件作为单元测试运行,只需点击Debug,这将使您的测试文件在调试模式下像普通文件一样运行,这将允许您单步执行您的测试函数,然后使用所有测试数据设置实际函数。
**注意:**这种方法在简单的自包含测试用例中有效,但是如果您有一个复杂的测试设置,那么它可能不起作用,但是您仍然可以获得一些关于如何在您的用例中使其工作的直觉。
dced5bon6#
要在spyder IDE中运行单元测试和代码覆盖,
要查看服务范围html,请执行以下操作:
1.打开保存特定测试程序的文件夹
1.打开名为“htmlcov”文件夹
1.打开“索引”文件。
n9vozmp47#
因此,我对Spyder相当陌生,因为我们正在使用Visual Studio进行开发,但原理似乎相似。
因此,我们的工作原理如下:
IDE是您用来进行开发的接口(在您的情况下是Spyder,在我的情况下是VS)。
Anaconda是(我的)Python环境,它读取并执行您编写的Python脚本。这将为您提供解释器窗口等。IDE使用Python环境来运行脚本。
您可以用几种不同的方式运行测试。
您已经创建了一个名为www.example.com的 Package 类/方法AllTests.py,它是一个python脚本。
这个AllTests.py脚本可以直接在控制台中运行,如您在问题中所述。
您还可以AllTests.py像运行任何其他脚本一样运行www.example.com脚本,如卡洛斯所述。
您还可以将插件安装到IDE中(Spyder / VS / etc),它解释所有UnitTest类,并以可视化的方式显示它们,而不是使用命令行。(在VS中是这样称呼的),或者替代的插件会浏览你的代码,找到你所有的测试,以各种不同的方式将它们分组在一起,允许你按名称/组/等来执行它们,并为您提供有关测试及其输出的进一步信息。(执行时间、通过/失败输出等)
我为Spyder找到的一个示例如下:https://pypi.python.org/pypi/spyder-unittest
不知道它是否好,因为我没有用过它。这里的其他人可能可以评论它的能力/性能。
下面是Visual Studio测试资源管理器的屏幕截图:
根据您的需求和开发实践,此测试插件可能是您的更佳选择。
我希望这对你有帮助。