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


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


10052
2018-06-05 12:12


起源



答案:


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

Django自己的 runtests.py 是一个很好的参考,但我发现大多数情况都令人费解。以下是几个替代示例:


2
2018-02-21 12:09



你有我的upvote,我把它标记为已接受的答案。我真的很想你添加信息,因为那是什么版本的Django runtests.py 支持的东西。这是新的吗? - dotz
@dotz,这是一个非常有趣的问题,一个我不知道答案,但无法抗拒寻找它。据我所知,Django的 runtests.py 创建于2005年,自v1.0起可用。这是原始提交: github.com/django/django/commit/... - Dário


答案:


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

Django自己的 runtests.py 是一个很好的参考,但我发现大多数情况都令人费解。以下是几个替代示例:


2
2018-02-21 12:09



你有我的upvote,我把它标记为已接受的答案。我真的很想你添加信息,因为那是什么版本的Django runtests.py 支持的东西。这是新的吗? - dotz
@dotz,这是一个非常有趣的问题,一个我不知道答案,但无法抗拒寻找它。据我所知,Django的 runtests.py 创建于2005年,自v1.0起可用。这是原始提交: github.com/django/django/commit/... - Dário


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

python manage.py test app.tests:TestClassHere

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

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

我觉得它对于一些最大的django可插拔应用程序是否足够好,对我来说已经足够了。


6
2018-06-05 12:40



谢谢你,很长一段时间,这是最受欢迎的答案,因为它是最好的答案。目前我认为Dario的这个更好。感谢大约5年左右的接受答案。 - dotz


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

来自文档

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

Project dir/
    /myapp
    /myotherapp
    /myproject

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

./manage.py test myotherapp/

这将执行“myotherapp”下的所有测试

./manage.py test 

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


5
2018-02-04 17:22



这应该是选定的答案 - Amged Rustom


当然你 能够 如果您不需要任何django依赖项,请使用独立的unittest测试Python部件

Django环境至少需要a settings.py 和 manage.py 文件。你可以设置那些只有必要的东西和UnitTest你的应用程序与manage.py。您应该将项目视为Django运行时环境,没有它就没有Django。你可以模仿设置,但是你会创造出比简单更多的黑客攻击。


1
2018-06-05 12:35