使用py.test对django项目测试
there is no secret to writing tests.. there are only secrets to writing testable code! – Misko Hevery
为什么不使用自带的test?
自带的django的test是继承了unittest,功能简单,出错是只显示调用栈,打印不怎么人性化,重要的是无法扩展.
py.test有什么好处?
py.test 则人性化的报告,配置,多个外部扩展(plugins) 比如: pytest-django pytest-cov pytest-benchmark pytest-pep8 这样从而使你更容易write better programs
如何使用py.test对django项目测试?
-
安装pytest-django pip install pytest-django 注意 没有安装,配置哪个也不会报错.
-
配置文件(pytest.ini) [pytest] DJANGO_SETTINGS_MODULE=yourproject.settings
-
运行py.test
发现一个问题 使用pyenv后,py.test总是运行系统的哪个,然不是pyenv环境的哪个,当你要求使用python3时则出错.
pytest 配置文件参考
[DEFAULT]
addopts = --maxfail=2 -rf # exit after 2 failures, report fail info
--pdb
--cov=XXX
--pep8
norecursedirs = .svn _build tmp*
minversion = 2.1 # 使用这个代表与人分享
[pytest]
addopts= --pdb
python_files= tests.py,test_*.py
注 加个插件,在配置文件中就是加个参数
一些技巧
-
查看有什么插件 py.test –traceconfig
-
禁止插件 py.test -p no:NAME NAME是插件名字
-
技用ini - DEFAULT会有妙用 一种随时切换的能力
参考
pytest官网 pytest-base-configure py-test-django-tutorial pytest