在PyCharm中添加Django的测试执行入口

本文简单记录如何在PyCharm中,添加Django的测试执行入口。 这么简单的事,之所以要记一篇,是因为其中有个小陷阱。

陷阱

在首次尝试时,孤第一反应是使用【Unittests】。 因为Django的测试类,是继承于Python自带的unittest

PyCharm添加可执行配置

然而,却调整了很久都没有成功。 究其原因,PyCharm里添加的【Unittests】,其执行入口是python -m unittest

Django测试的执行入口,应该是python manage.py test

可行解

其实,添加普通的【Python】配置即可。 【Python】配置,就是执行普通的某个Python脚本。

步骤:

  1. 在那个向右的执行箭头前,选择【Edit Configurations…】。
  2. 指定【Python】为配置类型。
  3. 在【Script】里,指定manage.py的(全)路径。
  4. 在【Script parameters】里,填写test

这样做,虽然可以执行测试,并且在【Run】的窗口里也有不错的显示,但毕竟不是IDE所支持的测试。 如果其中部分case失败,并不能分别显示、单独重测。

正解

孤实际使用的测试框架,是pytest。 它可以兼容unittest,并且有自己独到之处。

由于不是默认的测试框架,所以在一个项目中使用前,往往需要一些准备。 在本文这个Django的问题中,这反而是个优点。 有一个专门兼容Djangopytest插件——pytest-django,很好地处理了这个问题。

pip install pytest-django

把以下内容,写到pytest.initox.ini文件中。

[pytest]
DJANGO_SETTINGS_MODULE = test_settings
python_files = tests.py test_*.py *_tests.py

也可以在setup.cfg中,写类似内容。

[tool:pytest]
DJANGO_SETTINGS_MODULE = test_settings
python_files = tests.py test_*.py *_tests.py

在终端中,执行pytest即可执行测试。 在PyCharm中,添加一个【Python tests】【py.test】的执行入口,几乎不需要额外配置,即可成功执行。

最后,点击那个向右的绿色箭头!

All Tests Passed!


相关笔记