关于django的单元测试,需要知道的是
- 对于每一个测试方法都会将setUp()和tearDown()方法执行一遍
- 会单独新建一个测试数据库来进行数据库的操作方面的测试,默认在测试完成后销毁。
- 在测试方法中对数据库进行增删操作,最后都会被清除。也就是说,在test_add中插入的数据,在test_add测试结束后插入的数据会被清除。
- django单元测试时为了模拟生产环境,会修改settings中的变量,例如, 把DEBUG变量修改为True, 把ALLOWED_HOSTS修改为[*]。
测试全部用例
python manage.py test --setting settings_test
测试某个APP
python manage.py test appname --setting settings_test
测试某个app下的TeseCase类
python manage.py test alarm.tests.ModelTestCase --setting settings_test
-v {1,2,3} 数字越大,显示的输出越详细,测试的日志信息
python manage.py test --setting settings_test -v3
其他的选项请查看 --help
python manage.py test --help
2.Django单元测试框架结构分析
Django单元测试框架默认使用python的标准库unittest编写测试用例。单元测试框架提供:用例编写规范、专业的比较方法(断言assert)以及丰富的测试日志。
框架调用:from django.test import TestCase
测试用例编写:setUp()、assertEqual()、test_function_name()
unittest提供的断言种类挺多,但是经常用的也就几个 self.assertContains, self.assertEqual, self.assertTrue,self.assertRegexpMatches 正则匹配 assertIn
注:Django在执行setUp()部分操作时,并不会真正向数据库表中插入数据。所以不用关心testDown()清理工作。
2.Django单元测试框架结构分析
Django单元测试框架默认使用python的标准库unittest编写测试用例。单元测试框架提供:用例编写规范、专业的比较方法(断言assert)以及丰富的测试日志。
框架调用:from django.test import TestCase
测试用例编写:setUp()、assertEqual()、test_function_name()
unittest提供的断言种类挺多,但是经常用的也就几个 self.assertContains, self.assertEqual, self.assertTrue,self.assertRegexpMatches 正则匹配 assertIn
注:Django在执行setUp()部分操作时,并不会真正向数据库表中插入数据。所以不用关心testDown()清理工作。