如何在我的项目(Django)有任何更改时自动运行测试?

2024-04-26 01:17:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在我对django项目进行重大更改之后,我每隔一段时间运行一次python manage.py test。每当我在项目中更改和保存文件时,是否可以自动运行这些测试?早期检测bug会很有用(我知道rails在rspec中有类似的功能)。我用的是鼻子和长鼻子。提前谢谢。


Tags: 文件项目djangopytest功能managebug
3条回答

我是一个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']);
};

它所做的基本上是监视该目录中具有py扩展名的任何文件,如果它们更改了它,则执行一个shell命令,在本例中,这是我的python测试(您可能想更改它,我的测试名称是main_test.py)。为了运行这个grunt脚本,需要安装Node.js,然后在全局路径中有npm。之后,还需要检查几个节点模块。除了grunt cli之外,所有这些模块都将存储在当前文件夹中,因此请确保您位于项目的根目录或将gruntfile.js放在哪个文件夹中。然后运行衰减命令。

npm install grunt-cli -g
npm install grunt
npm install grunt-contrib-watch
npm install grunt-shell

不用担心尺寸,这些都是很小的模块。现在您已经完成了所有的设置,您只需运行grunt,它就会开始监视您的py文件,当您保存它们时,它就会运行您的测试。这可能不是运行python测试的最佳方式,但正如我所说,我是JavaScript开发人员,而且我认为Grunt提供了一种非常简单的方式来执行测试,甚至对其他语言也是如此,所以我使用它。

py.测试答案(也适用于鼻子):

pip install pytest-xdist
py.test -f # will watch all subfolders for changes, and rerun the tests

因为py.test了解鼻子,所以这也适用于鼻子。

使用entr

$ find . -name '*.py' | entr python ./manage.py test

或者,要获得额外的积分,请将其与ack结合使用:

$ ack --python | entr python ./manage.py test

如果您希望它在添加新文件时找到它们:

$ until ack -f --python | entr -d python ./manage.py test; do sleep 1; done

相关问题 更多 >