我们有一个相当大的业务逻辑测试套件,它会在几秒钟内完成。我们将其作为提交条件(必须通过的钩子),并且可以很好地阻止最愚蠢的错误使它脱离我的计算机。
我们最近开始使用webdriver添加端到端前端测试。其中一些测试通过了第三方集成。这些测试很有用,但速度确实很慢,并且需要网络连接。
除非有怀疑,否则我们还会进行一些逻辑测试,这些测试非常长,被注释掉了(是的!)。
是否有一种明智的方法可以将这些缓慢的测试分开,使它们仅在我们明确希望它们运行时才运行,而不是在您每次运行./manage.py test
时才运行?
答案 0 :(得分:0)
如果使用默认的Django测试运行器,则没有简单的方法可以完成所需的操作。也许重新排列测试目录的结构,以便您可以调用./manage.py test path/to/directory_with/webtests
或./manage.py test path/to/directory_with_fast_tests
另一种解决方案是使用pytest
Custom Markers
文档说明:
import pytest
@pytest.mark.webtest
def test_send_http():
pass # perform some webtest test for your app
Register自定义标记:
# content of pytest.ini
[pytest]
markers =
webtest: mark a test as a webtest.
然后,您只需运行pytest -v -m webtest
,将仅执行标记的测试。