use*_*444 42 python testing django unit-testing nose
在python manage.py test我对django项目做出重大改变之后,我每隔一段时间就会运行一次.每当我在项目中更改并保存文件时,是否可以自动运行这些测试?早期检测错误会很有用(我知道rails有类似于rspec的东西).我正在使用鼻子和django-nose.提前致谢.
cla*_*cke 32
使用entr:
$ find . -name '*.py' | entr python ./manage.py test
Run Code Online (Sandbox Code Playgroud)
或者,要获得额外的信用,请将其与ack结合使用:
$ ack --python | entr python ./manage.py test
Run Code Online (Sandbox Code Playgroud)
如果您希望它在添加时找到新文件:
$ until ack -f --python | entr -d python ./manage.py test; do sleep 1; done
Run Code Online (Sandbox Code Playgroud)
The*_*Cat 15
py.test回答(也适用于鼻子):
pip install pytest-xdist
py.test -f # will watch all subfolders for changes, and rerun the tests
Run Code Online (Sandbox Code Playgroud)
由于py.test了解鼻子,这也适用于鼻子.
Ima*_*adi 10
我是一名JavaScript开发人员,因此我使用JS开发人员使用Node.js构建的工具来实现我的项目中的相同目标.它非常简单,但您还需要安装nodeJS才能使其正常工作.
我在项目根目录中创建了一个名为gruntfile.js的文件:
//gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
watch: {
files: ['*.py'],
tasks: ['shell']
},
shell: {
test: {
command: 'python main_test.py'
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-shell');
grunt.registerTask('default', ['watch']);
};
Run Code Online (Sandbox Code Playgroud)
它正在做的是基本上观看该目录中具有py扩展名的任何文件,如果他们更改了它,则执行shell命令,在这种情况下是我的python测试(你可能想要改变它,我的测试名称是main_test.py).为了运行这个grunt脚本,您需要安装Node.js,之后您将在全局路径中使用npm.之后,您还需要安装几个节点模块.除grunt-cli之外的所有这些模块都将存储在当前文件夹中,因此请确保您位于项目的根目录或者将gruntfile.js放入的文件夹中.然后运行fallowing命令.
npm install grunt-cli -g
npm install grunt
npm install grunt-contrib-watch
npm install grunt-shell
Run Code Online (Sandbox Code Playgroud)
不要担心尺寸,这些是非常小的模块.现在您已经完成了所有设置,您可以简单地运行grunt它将开始观察您的py文件,当您保存它们时它将运行您的测试.它可能不是运行python测试的最佳方式,但正如我所说,我是一名JavaScript开发人员,我认为Grunt提供了一种非常简单的方法来执行测试,即使是其他语言也是如此,所以我使用它.
我刚试过nose-watch,它的效果太棒了!安装插件并使用该--with-watch选项运行测试.
更新 :(从django-nose的manage.py帮助程序运行测试时似乎不能正常工作.
最终我选择使用支持django的tdaemon,尽管对于完整的项目可能还需要一些小小的功能.
例如,以下是我为django项目运行的方法:
tdaemon -t django --custom-args=a_specific_app_to_test -d --ignore-dirs logs
Run Code Online (Sandbox Code Playgroud)
该--custom-args是集中测试,以特定的应用程序(同你会怎么做python manage.py test a_specific_app_to_test
该-d参数是启用调试日志记录,打印的文件变化触发运行.
这--ignore-dirs是必要的,因为我的测试写入日志(这本身就是一个问题!)并tdaemon进入无限循环.
我发现这里的另一个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"
Run Code Online (Sandbox Code Playgroud)
现在,每当*.py文件更改时,它将重新运行您的命令。它甚至可以找到新文件。
| 归档时间: |
|
| 查看次数: |
9835 次 |
| 最近记录: |