-
Notifications
You must be signed in to change notification settings - Fork 0
django test
以下内容来自Django 1.5文档的topics/testing部分:
主要是在 tests.py
中定义 django.test.TestCase
的子类进行unit test,可以不用doctest。
使用 from django.utils import unittest
而不是 import unittest
。一般直接使用 from django.test import TestCase
而不要使用 unittest.TestCase
,除非你对此很了解。即 unittest
要用Django的不用Python自带的, TestCase
要用test包的不用unittest包的。
使用 python manage.py test
运行测试,一次Ctrl-C安全退出,第二次强制退出。具体指令格式另行整理。运行测试时无需用 python manage.py runserver
启动一个服务器。
It is a bad idea to have such import-time database queries in your code anyway - rewrite your code so that it doesn’t do this.
django.test.client.Client
用于检查正确的模版是否被渲染,以及是否从view得到正确的变量。不能取代 Selenium 。后者用于模拟浏览器检查HTML是否正确以及JavaScript功能是否正确。后者的使用需要配合 LiveServerTestCase
。
SimpleTestCase
TransactionTestCase
TestCase
LiveServerTestCase
TestCase
的子类可直接使用 self.client
而无需自己构造 Client
。
fixture加载。
自定义测试用的urlconf。相当于测试中的URL Reverse。
临时自定义设置。
各种Assertion。
独立测试view函数用的。
在开启 coverage 的情况下运行测试: coverage run --source='.' manage.py test myapp
显示报告: coverage report
或 coverage html
Selenium -> Capybara -> Cucumber Capybara = Pycabara Rspec = should-dsl, PySpec
SpecLoud uses nose with beautiful syntax and highlight with green & red ludibrio provides mocks & stubs
Gherkin syntax: Pyccuracy, lettuce, freshen, behave pycuke is dead, use freshen instead; freshen is dead, uses nose, complex! behave > lettuce: pythonic, use test database, but poor with django