Django单元测试中Fixtures用法详解


Posted in Python onFebruary 25, 2020

在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。

 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVT的软件设计模式,即模型Model,视图View和模板Template。2005年7月在BSD许可证下发布。  

  在对Django项目做单元测试时,经常需要生成或者导入一些初始数据。对于已经有数据存在于正式数据库的app来说,使用Fixture 载入数据,是最简便有效的方法。

本文通过配置myapp.json,tests.py的实例代码给大家详细介绍。

基础配置

在settings.py 中配置如下内容:

FIXTURE_DIRS = ('/path/to/api/fixtures/',)

在要测试的app中,增加目录 fixtures
在新增的 fixtures 目录下,新建文件 myapp.json ,文件名自己定,后缀必须是 .json 。

配置myapp.json

文件中内容格式如下,实际使用时,要删除掉实际情况,使用数据,并删除掉注释,如果需要多条数据,可以多写几个{}的内容:

[ {
 "model": "myapp.user", # 数据库名
 "pk": "a864340d850f484bb89ea2981047bc5e", # 要导入的数据
 "fields": { # 要导入的字段,字段名跟数据库(models)内的字段一样,值,根据实际需要设置
  "username": "zhangsan",
  "user_num": "000",
  "zh_name": "张三",
  "mobile": "18712345678",
  "mail": "zhangsan@abc.com",
  "is_deleted": false,
  "create_time": "2013-01-16",
  "update_time": "2013-01-16"
 }
 },
]

配置tests.py

class Test_user_name(TestCase):
 '''测试人员名称是否正常'''
 fixtures = ['myapp.json']  # 在这里选择你要导入要测试的用户数据

 def test_user_name(self):
  user = User.objects.get(username='zhangsan')
  self.assertEqual(user.name, "zhangsan")

下边就可以运行你的单元测试了

提醒:

如果你配置了测试的Models 的Signals,这部分的代码也会被执行

Fixture loading

 如果数据库里没有数据,那么对于一个基于数据库的网站来说,test case并无多大的用处.为了给测试数据库加入测试数据更方便,django提供了载入fixtures的方法. 

 fixture是一系列的数据集合,django知道如何将它导入数据库。

 创建fixture最直接的方法就是使用manage.py dumpdata.当然,这假设你的实际数据库里已经有数据了.

 注意:

   如果你运行过manage.py syncdb命令,那么你已经使用过fixture了--只是你不知道而已。当你使用syncdb去创建数据库时,会创建一个叫initial_data的fixture。
   其他名字的Fixture可以通过manage.py loaddata命令手动安装.

 一旦建立了一个fixture,并将它放在了某个django app的fixtures目录中,你就可以在你的测试类里使用它了:

from django.test import TestCase
from myapp.models import Animal
class AnimalTestCase(TestCase):
  fixtures = ['mammals.json', 'birds']
  def setUp(self):
    # Test definitions as before.
    call_setup_methods()
  def testFluffyAnimals(self):
    # A test that uses the fixtures.
    call_some_test_code()

这是具体发生的过程:

  1. 在setup()运行前,django会清空数据库,相当于你执行了syncdb。

  2.然后,所有的fixture会被安装.在例子中,django会安装任何一个名字为mammals的JSON格式的fixture和名为birds的fixture

总结

到此这篇关于Django单元测试中Fixtures用法详解的文章就介绍到这了,更多相关django fixtures用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
django中使用POST方法获取POST数据
Aug 20 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
python中取绝对值简单方法总结
Jul 24 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Python解析微信dat文件的方法
Nov 30 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
python常见的占位符总结及用法
Jul 02 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 #Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 #Python
python numpy生成等差数列、等比数列的实例
Feb 25 #Python
信号生成及DFT的python实现方式
Feb 25 #Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 #Python
python生成任意频率正弦波方式
Feb 25 #Python
python numpy库linspace相同间隔采样的实现
Feb 25 #Python
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
改变Apache端口等配置修改方法
2008/06/05 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
Python简单实现Base64编码和解码的方法
2017/04/29 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
用python进行视频剪辑
2020/11/02 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
致全体运动员广播稿
2014/02/01 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
老公保证书范文
2014/04/29 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python