在PyCharm中添加Django的测试执行入口
2017-11-22 17:19:46 +08 字数:788 标签: Django本文简单记录如何在PyCharm中,添加Django的测试执行入口。 这么简单的事,之所以要记一篇,是因为其中有个小陷阱。
陷阱 ¶
在首次尝试时,孤第一反应是使用【Unittests】。 因为Django的测试类,是继承于Python自带的unittest。
然而,却调整了很久都没有成功。
究其原因,PyCharm里添加的【Unittests】,其执行入口是python -m unittest
,
而Django测试的执行入口,应该是python manage.py test
。
可行解 ¶
其实,添加普通的【Python】配置即可。 【Python】配置,就是执行普通的某个Python脚本。
步骤:
- 在那个向右的执行箭头前,选择【Edit Configurations…】。
- 指定【Python】为配置类型。
- 在【Script】里,指定
manage.py
的(全)路径。 - 在【Script parameters】里,填写
test
。
这样做,虽然可以执行测试,并且在【Run】的窗口里也有不错的显示,但毕竟不是IDE所支持的测试。 如果其中部分case失败,并不能分别显示、单独重测。
正解 ¶
孤实际使用的测试框架,是pytest。 它可以兼容unittest,并且有自己独到之处。
由于不是默认的测试框架,所以在一个项目中使用前,往往需要一些准备。 在本文这个Django的问题中,这反而是个优点。 有一个专门兼容Django的pytest插件——pytest-django,很好地处理了这个问题。
pip install pytest-django
把以下内容,写到pytest.ini
或tox.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!