测试

运行测试

要运行django-wiki的测试,您需要安装 hatch (read更多关于它 here )安装后,您可以执行 hatch run test:all 来测试您在我们矩阵中的更改。

运行 specific tests ,看到了 hatch run test:all --help .

要包括Selenium测试,您需要具备 Xvfb 已安装(通常通过系统提供的包管理器), chromedriver 并设置环境变量 INCLUDE_SELENIUM_TESTS=1 .例如,使用以下方式运行测试(取决于您是想直接测试还是通过测试矩阵测试)::

INCLUDE_SELENIUM_TESTS=1 hatch run test
INCLUDE_SELENIUM_TESTS=1 hatch run test:all

如果您希望在运行功能测试时也显示浏览器窗口,请设置环境变量 SELENIUM_SHOW_BROWSER=1additionINCLUDE_SELENIUM_TESTS=1 ,例如::

INCLUDE_SELENIUM_TESTS=1 SELENIUM_SHOW_BROWSER=1 hatch run test:all

编写测试

测试通常分为几类:

  • 模型级别的测试。这些测试用例应该继承自 tests.base.TestBase .

  • Tests for views that return HTML. We normally use django-functest for these, especially if the page involves forms and handling of POST data. Test cases should inherit from tests.base.WebTestBase and tests.base.SeleniumBase - see tests.core.test_views.RootArticleViewTestsBase, RootArticleViewTestsWebTest and RootArticleViewTestsSelenium for an example.

    (In过去的Django测试客户端就是用于这些,目前仍然有很多测试以这种风格编写。这些应该尽可能逐步淘汰,因为测试客户端在复制浏览器和人们实际做的事情方面做得很差。

  • 测试返回SON或其他非HTML的视图。这些测试用例应该继承自 tests.base.DjangoClientTestBase .

还有其他混音 tests.base 提供测试常用的固定装置,例如根物品。

警告

视图的编写应尽可能在不使用JavaScript的情况下工作,并且可以使用快速的WebTest方法进行测试,而不是依赖于缓慢且脆弱的Selenium方法。默认情况下不运行Selenium测试。