zoukankan      html  css  js  c++  java
  • 在Django测试中使用的各种办法

    Fixture

    ​ 在对Django项目做单元测试时,我们需要一些初始的数据来作为检测结果的依据,那么对于我们已经有正式数据库的模块来说,使用Fixture载入数据是简单有效的方法。

    1. 首先,你需要一份json格式的数据文件,Django对此提供了很好的支持—dumpdata 命令:

      python manage.py dumpdata myapp >myapp/fixtures/myapp.json
      # 这个命令将帮助你把数据库中myapp 导入到myapp/fixtures/test.json中
      # 这个myapp可以没有,会把数据库所有数据生成Json文件
      
    2. 然后在setting.py中加入

      FIXTURE_DIRS = ('/path/to/api/fixtures/',)
      
    3. 接着在test.py中 加入:

      fixtures = ['test.json']
      
    4. 最后么当然是运行test命令了:

       ./manage.py test
      
    5. 示例

      # coding=utf-8
      from __future__ import unicode_literals
      import json
      from rest_framework import status
      from rest_framework.test import APITestCase
      
      
      class DjangoUnittest01(APITestCase):
          fixtures = ["my_test.json"]
      
          def setUp(self):
      
              data = {
                  "username": 't1',
                  "password": 'admin123',
                  "code": 666,
              }
              self.client.post('/base/admin/login/', data)
      
          def test_usergroup_user_information(self):# 以test开头的方法将会执行
      
              url = '/base/admin/teacher/usergroup/21/user/4/information/?otype=soldier'
              response = self.client.get(url)
              data = {
                  "update_date": "2018-05-31 16:22:55",
                  "task": "196311177981753978",
                  "otype": "soldier",
                  "task_name": "f_test1",
                  "progress": 1.0,
                  "id": 871
              }
      
              self.assertEqual(response.status_code, status.HTTP_200_OK)
              self.assertDictEqual(response.data["results"][0], data)
      
    6. 测试用例通过

      Creating test database for alias 'default'...
      System check identified no issues (0 silenced).
      .
      ----------------------------------------------------------------------
      Ran 1 test in 3.863s
      
      OK
      Destroying test database for alias 'default'...
      
    7. 常用断言

      assertEqual(a, b)     a == b      
      assertNotEqual(a, b)     a != b      
      assertTrue(x)     bool(x) is True      
      assertFalse(x)     bool(x) is False      
      assertIs(a, b)     a is b     
      assertIsNot(a, b)     a is not b     
      assertIsNone(x)     x is None    
      assertIsNotNone(x)     x is not None   
      assertIn(a, b)     a in b     
      assertNotIn(a, b)     a not in b    
      assertIsInstance(a, b)     isinstance(a, b)    
      assertNotIsInstance(a, b)     not isinstance(a, b)
      assertListEqual(a, b)      lists     
      assertTupleEqual(a, b)     tuples    
      assertDictEqual(a, b)      dicts
      
  • 相关阅读:
    将json的时间格式转换成正常的时间格式
    Log4Net
    “我记录”开发框架
    面诊治病图文百科1000问
    手脚治病养生图文百科1000问
    生活真需要:1288个实用偏方
    很老很老的老偏方——对症自疗奇效方全集
    边上班边养生(套装共10册)
    五谷杂粮养生一本全
    现代生活知识百科(全4册)
  • 原文地址:https://www.cnblogs.com/jiumo/p/10946086.html
Copyright © 2011-2022 走看看