![]() |
1
124
您可以将DjangoTestSuiteRunner子类化,并重写setup\u databases和teardown\u databases方法以传递。 创建一个新的设置文件,并将TEST\u RUNNER设置为刚刚创建的新类。然后在运行测试时,使用--settings标志指定新的设置文件。
创建一个类似于以下内容的自定义测试套件运行程序:
创建自定义设置:
在运行测试时,请按如下方式运行,并将--settings标志设置为新的设置文件:
更新:2018年4月
自Django1.8以来,该模块
更多信息请查看 official doc 关于自定义测试运行程序的部分。 |
![]() |
2
82
一般来说,应用程序中的测试可以分为两类
单元测试,不需要设置和拆卸数据库,这些我们应该继承 SimpleTestCase .
对于集成,测试用例从TestCase继承,反过来又从TransactionTestCase继承,它将在运行每个测试之前设置并拆除数据库。
此策略将确保数据库的创建和销毁只针对访问数据库的测试用例,因此测试将更加高效 |
![]() |
3
29
从
所以重写
像这样使用:
|
![]() |
4
9
我选择继承
我的第一个附加检查,看看是否设置一个数据库是必要的,并允许正常的
我的代码假设从
https://docs.djangoproject.com/en/1.6/topics/testing/tools/#django.test.SimpleTestCase mysite/脚本/设置.py
最后,我在项目的设置.py文件。
现在,当只运行非db依赖的测试时,我的测试套件运行速度快了一个数量级!:) |
![]() |
5
6
更新时间:
另请参见
this answer
使用第三方工具
@塞萨尔是对的。不小心跑了
为了更安全,请使用相同的方法
您需要创建一个名为
如果使用的是South,请同时运行以下命令:
现在,您可以通过以下方式快速(安全)运行单元测试:
|
|
6
2
作为修改设置以使NoDbTestRunner“安全”的替代方法,下面是NoDbTestRunner的修改版本,它关闭当前数据库连接并从设置和连接对象中删除连接信息。对我有用,在依赖它之前在您的环境中测试它:)
|
![]() |
7
2
另一个解决方案是让您的测试类从
但是,如果您的测试不使用数据库,则不必担心此警告,您可以获得不必在事务中运行每个测试用例的好处。 |
![]() |
8
0
上述解决方案也很好。但是,如果迁移次数更多,下面的解决方案也会减少数据库创建时间。 在单元测试期间,运行syncdb而不是运行所有的south迁移将快得多。
|
![]() |
9
0
我的web主机只允许从它们的web GUI创建和删除数据库,因此在尝试运行时出现“Get a error creating the test database:Permission denied”错误
我最后做的是修改…/Django/db/backends中的Django代码/创建.py,具体来说是创建测试数据库和销毁测试数据库函数。
为了
为了
在那之后,我的测试运行得很好——尽管我确实单独设置了一个常规数据库的测试版本。 当然,这不是一个很好的解决方案,因为如果升级Django,它会崩溃,但是由于使用virtualenv,我有一个Django的本地副本,所以至少我可以控制何时/是否升级到新版本。 |
![]() |
10
0
SimpleTestCase仍然尝试连接到我的测试数据库并运行迁移。当我进行配置/设置时/测试.py文件,然后我的单元测试运行没有它。它允许我使用具有外键和唯一约束字段的模型。(需要db查找的反向外键查找失败。)
PS代码段
|
![]() |
11
0
使用鼻子测试跑步器(django nose)时,可以执行以下操作:
在你的
或者 我只想让它运行特定的测试,所以我像这样运行它:
|
![]() |
12
0
您可以将数据库设置为普通TestCase中的空列表django.测试.
|
![]() |
Patrick Bond · 如何将模型中的函数结果添加到列表中? 5 月前 |
![]() |
bur · 每次从模板调用方法都会查询数据库吗? 5 月前 |
|
Stefan · 在子目录中设置Django 6 月前 |
![]() |
vale383 · 如何在Django端点中查找user_id 6 月前 |
![]() |
Kovy Jacob · Django在动态URL段中添加斜线 6 月前 |
![]() |
user987 · 如何在Django中访问提交的表单请求数据 6 月前 |
![]() |
user24242514 · 将嵌套查询字符串请求转换为字典 6 月前 |