Django

时间:2018-10-08 15:26:34

标签: django django-testing django-tests

我们有一个相当大的业务逻辑测试套件,它会在几秒钟内完成。我们将其作为提交条件(必须通过的钩子),并且可以很好地阻止最愚蠢的错误使它脱离我的计算机。

我们最近开始使用webdriver添加端到端前端测试。其中一些测试通过了第三方集成。这些测试很有用,但速度确实很慢,并且需要网络连接。

除非有怀疑,否则我们还会进行一些逻辑测试,这些测试非常长,被注释掉了(是的!)。

是否有一种明智的方法可以将这些缓慢的测试分开,使它们仅在我们明确希望它们运行时才运行,而不是在您每次运行./manage.py test时才运行?

1 个答案:

答案 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,将仅执行标记的测试。