我有一个名为 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 的绿色箭头。这是您将用来运行测试的按钮。
当您第一次点击箭头时,会弹出一个窗口。您可以通过单击设置齿轮(此面板的左上角)-> 配置来访问此弹出窗口。
选择测试框架。我假设你已经安装了 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/