我在Django中进行了一系列测试,分为各种“类型”,例如“单位”,“功能”,“慢”,“表现”,......
目前我正在用一个装饰器注释它们,这个装饰器只用于运行某种类型的测试(类似于@skipIf(...)),但这似乎不是一种最佳方法。
我想知道是否有更好的方法将测试分成类型?我愿意使用不同的测试运行器,扩展现有的django测试框架,构建套件,甚至使用其他测试框架,如果不牺牲其他好处的话。
想要这样做的根本原因是运行一个有效的构建管道,因此我的优先事项是:
答案 0 :(得分:1)
我公司组织测试的方式是将它们分为两大类。单位和功能。单元测试在Django测试发现中进行。 manage.py测试将运行它们。功能测试位于该目录之外。它们可以手动运行,也可以通过CI运行。在这种情况下Buildbot。他们仍然使用unittest textrunner。我们还有一个称为压力测试的功能测试子类别。这些是无法并行运行的测试,因为它们对服务器做了粗暴的事情。就像关闭数据库并看看会发生什么。
然后,CI可以将每个测试类型作为不同的步骤运行。测试可以用skipif装饰。
这不是一个完美的解决方案,但它非常清晰易懂。
答案 1 :(得分:1)
这样看起来像这样:
tests
使用以下命令在测试目录中创建__init__.py
from unit_tests import *
from functional_tests import *
你可以从manage.py运行测试,如下所示:
manage.py test # run all tests (include django tests)
manage.py test my_app # run all my tests
manage.py test my_app.UnitTestCase # run specific test case