测试
运行测试
要运行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=1
在 addition 到 INCLUDE_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
andtests.base.SeleniumBase
- seetests.core.test_views.RootArticleViewTestsBase
,RootArticleViewTestsWebTest
andRootArticleViewTestsSelenium
for an example.(In过去的Django测试客户端就是用于这些,目前仍然有很多测试以这种风格编写。这些应该尽可能逐步淘汰,因为测试客户端在复制浏览器和人们实际做的事情方面做得很差。
测试返回SON或其他非HTML的视图。这些测试用例应该继承自
tests.base.DjangoClientTestBase
.
还有其他混音 tests.base
提供测试常用的固定装置,例如根物品。
警告
视图的编写应尽可能在不使用JavaScript的情况下工作,并且可以使用快速的WebTest方法进行测试,而不是依赖于缓慢且脆弱的Selenium方法。默认情况下不运行Selenium测试。