经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Django » 查看文章
Django使用unittest模块进行单元测试过程解析
来源:jb51  时间:2019/8/2 10:21:28  对本文有异议

Django测试框架非常简单,首选方法是使用python标准库中的unittest模块。

Writing tests

Django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试。类名为django.test.TestCase,继承于python的unittest.TestCase。

  1. from django.test import TestCase
  2. from myapp.models import Animal
  3. class AnimalTestCase(TestCase):
  4. def setUp(self):
  5. Animal.objects.create(name="lion", sound="roar")
  6. Animal.objects.create(name="cat", sound="meow")
  7. def test_animals_can_speak(self):
  8. """Animals that can speak are correctly identified"""
  9. lion = Animal.objects.get(name="lion")
  10. cat = Animal.objects.get(name="cat")
  11. self.assertEqual(lion.speak(), 'The lion says "roar"')
  12. self.assertEqual(cat.speak(), 'The cat says "meow"')

运行测试的时候,测试程序会在所有以test开头的文件中查找所有的test cases(inittest.TestCase的子类),自动建立测试集然后运行测试。

注意:如果测试是基于数据库访问的(读取、查询Model),一定要用django.test.TestCase建立测试类,而不要用unittest.TestCase。

Runing tests

执行目录下所有的测试(所有的test*.py文件):

  1. $ python manage.py test

执行animals项目下tests包里的测试:

  1. $ python manage.py test animals.tests

执行animals项目里的test测试:

  1. $ python manage.py test animals

单独执行某个test case:

  1. $ python manage.py test animals.tests.AnimalTestCase

单独执行某个测试方法:

  1. $ python manage.py test animals.tests.AnimalTestCase.test_animals_can_speak

为测试文件提供路径:

  1. $ python manage.py test animals/

通配测试文件名:

  1. $ python manage.py test --pattern="tests_*.py"

启用warnings提醒:

  1. $ python -Wall manage.py test

数据库

测试是需要数据库的,django会为测试单独生成数据库。不管你的测试是否通过,当你所有的测试都执行过后,这个测试数据库就会被销毁。

默认情况下,测试数据库的名字是test_DATABASE_NAME,DATABASE_NAME是你在settings.py里配置的数据库名.如果 你需要给测试数据库一个其他的名字,在settings.py中指定TEST_DATABASE_NAME的值。使用sqlite3时,数据库是在内存中创建的。

除了数据库是单独创建的以外,测试工具会使用相同的数据库配置--DATABASE_ENGINE, DATABASE_USER, DATABASE_HOST等等.创建测试数据库的用户DATABASE_USER(settings中)指定,所以你需要确认 DATABASE_USER有足够的权限去创建数据库。

测试执行顺序

为了保证所有的测试都从干净的数据库开始,执行顺序如下:

1.所有的TestCase子类首先运行。

2.所有其他的单元测试(unittest.TestCase,SimpleTestCase,TransactionTestCase)。

3.其它的测试(例如doctests等)

加速测试

可以将PASSWORD_HASHERS设置为更快的算法:

  1. PASSWORD_HASHERS = (
  2. 'django.contrib.auth.hashers.MD5PasswordHasher',
  3. )

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号