python - 如何在 Spyder IDE 中运行和调试单元测试

标签 python unit-testing debugging spyder

我有一个名为 AllTests.py 的 python 文件,如下所示:

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”放入这些选项时,我收到一条错误消息“option -m not recognized”。它似乎试图将参数发送到 AllTests.py 文件而不是 python。

如何设置 Spyder 来调试这些单元测试?

最佳答案

您可以使用模块 spyder-ide/spyder-unittest。

https://github.com/spyder-ide/spyder-unittest

要安装它,请使用:

sudo pip install spyder-unittest

然后重新启动计算机。打开蜘蛛。在右上角,您会发现一个新标签:单元测试。点击它。您将看到带有标签 Run test 的绿色箭头。这是您将用来运行测试的按钮。

from the documentation

当您第一次点击箭头时,会弹出一个窗口。您可以通过单击设置齿轮(此面板的左上角)-> 配置来访问此弹出窗口。

选择测试框架。我假设你已经安装了 unitest .你应该把它作为一个选项。其他选项是 py.test nose .

在脚本所在的文件夹中选择一个文件夹 test_<name>.py将位于。最佳实践表明您应该创建一个名为 unittests 的文件夹在被测试脚本所在的文件夹内:

my_python_scripts_folder/
            -> unittests/
                  test_<name1>.py
                  test_<name2>.py
                  test_<name3>.py
            <name1>.py
            <name2>.py
            <name3>.py

注意名称约定,所有包含测试的脚本的名称都应以 tests_ 开头.您的脚本 test_.py 应该如下所示:

import unittest
import sys
sys.path.append("../")   # this adds the mother folder  
                         # "my_python_scripts_folder/" to the python path 
                         # It will allow you to import your modules.
                         # Adjust depending where your tests scripts location

from <name1> import Stuff

class TestClass(unittest.TestCase):
    def test_ImportFromFile(self):
        <do stuff with your Stuff>
        self.assertIsNone(Stuff)
        self.assert  ... etc.

所有测试方法的名称都应以 test_ 开头.

检查:https://docs.python-guide.org/writing/tests/了解更多信息。

您可以使用 spyde IDE 中的调试工具调试您的测试脚本

关于python - 如何在 Spyder IDE 中运行和调试单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112430/

相关文章:

java - 单元测试复杂的方法,测试什么和假设什么?

debugging - Nvidia Visual Studio Nsight CPU 和 GPU 调试

c# - 如何打开 C# 故障转储 (Minidump)

Xcode:在调试时,有什么方法可以阻止它在最前面的窗口中打开导航器?

python - 删除嵌入后发送另一个嵌入不起作用

python - 如何使用OpenCV区分两个拍摄目标

ios - 单元测试本地通知

javascript - [ngModelOptions] ="{standalone: true}"的 Angular 单元测试失败

python - 如何将 mousePressEvent 从 QItemDelegate 传递给 QTableView

python - 在访问 MySQL 时使用不同的用户进行选择/插入