如何在我的项目(Django)有任何更改时自动运行测试?
目前我在我的Django项目中,每当我做了重要的修改后,就会偶尔运行一下 python manage.py test
来测试。请问有没有办法在我每次修改并保存文件时,自动运行这些测试呢?这样可以更早发现问题(我知道Rails有类似的功能,叫做rspec)。我现在使用的是nose和django-nose。谢谢!
16 个回答
12
这里有个Javascript开发者,我发现 nodemon
(https://github.com/remy/nodemon)用起来非常不错。默认情况下,它会监视 *.js
文件,但你可以通过 --ext
这个选项来设置其他文件类型。使用方法很简单:
npm install -g nodemon
cd /your/project/dir/
nodemon --ext py --exec "python manage.py test"
现在,每当一个 *.py
文件发生变化时,它就会重新运行你的命令。它甚至能找到新添加的文件。
18
py.test 的回答(同样适用于 nose):
pip install pytest-xdist
py.test -f # will watch all subfolders for changes, and rerun the tests
因为 py.test 能够理解 nose,所以这个方法在 nose 中也可以使用。
50
可以使用 entr 工具:
- $
brew install entr
// 先用这个命令安装 entr - $
find . -name '*.py' | entr python ./manage.py test
// 然后用这个命令来监控所有的 Python 文件,并在文件变化时运行测试
如果你想更进一步,可以把它和 ack 结合使用:
$ ack --python | entr python ./manage.py test
如果你希望它能在你添加新文件时也能找到这些文件:
$ until ack -f --python | entr -d python ./manage.py test; do sleep 1; done