• 在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
      
  • 相关阅读:
    洛谷模板汇总
    BZOJ1787【AHOI2008】Meet紧急集合 <LCA>
    HDU3068 最长回文 <Manacher>
    UVa12345 Dynamic len(set(a[L:R])) <带修莫队>
    BZOJ2038 小Z的袜子 <莫队>
    BZOJ1103【POI2007】大都市meg <树上差分+树状数组>
    BZOJ3226【SDOI2008】校门外的区间
    BZOJ1012【JSOI2008】最大数 <线段树>
    20170918~24周总结
    BZOJ1934【SHOI2007】善意的投票 <网络流>
  • 原文地址:https://www.cnblogs.com/jiumo/p/10946086.html
Copyright © 2020-2023  润新知