如何在Django中测试单个应用程序(而不是项目)?

dot*_*otz 14 testing django

我想测试我的小应用程序,我保留在一个单独的包中.现在我创建了一个"test_project"目录,在那里创建了一个测试项目,我正在使用项目的manage.py来运行测试.但我一直在想 - 有更好的方法吗?是否可以启动单个应用程序的测试,可能有一些默认配置(比如,sqlite数据库)?

Nic*_*ady 10

把它写下来是因为我还没有在这里看到它

来自文档

如果您的django结构看起来像这样:

Project dir/
    /myapp
    /myotherapp
    /myproject
Run Code Online (Sandbox Code Playgroud)

Django允许您通过执行以下命令仅从"myotherapp"执行测试:

./manage.py test myotherapp/
Run Code Online (Sandbox Code Playgroud)

这将执行"myotherapp"下的所有测试

./manage.py test 
Run Code Online (Sandbox Code Playgroud)

将在您的项目目录中执行所有测试.

  • @AmgedRustom 为什么?据我所知,它没有解决OP的情况,他将他想要测试的应用程序作为一个单独的(可能是pip安装的)包保留在“site-packages”中的某个位置。 (2认同)

Dár*_*rio 7

可以独立运行单个应用程序的测试,而无需为此创建 Django 测试项目。这样做的一种方法是runtests.py在您的应用程序的根目录中创建一个,用于设置 Django 设置并以./manage.py test your_app编程方式运行。一个例子runtests.py是 Django 自己的:runtests.py文档)。

Django 自己的runtests.py是一个很好的参考,但我发现在大多数情况下它很复杂。下面是几个替代示例:


dm0*_*514 6

如果您使用鼻子,您可以运行单个应用程序的测试.

python manage.py test app.tests:TestClassHere

至于测试一个应用程序.我只是遵循其他大型django项目的惯例,这正是你正在做的事情.创建一个test_project目录.

https://bitbucket.org/jespern/django-piston/src/7c90898072ce/tests/test_project

我认为,如果它对于一些最大的django可插拔应用程序来说已经足够好了,那对我来说已经足够了.