1、准备数据模式,Django空库测试需要所有相关数据模式必须在Django中定义,说白了,model不能有managed=Fasle,为了解决这个问题,你必须得有一个managed全部为True的Schema代码版本。

2、准备初始化数据,当然使用fixtures固定数据集特性,这个数据集最好现存库里面查询出要用的数据,然后用Django序列化器生成所需的格式即可。

3、如permission,contenttype这类系统生成的数据,不需要做fixture,但是其中如果有你自己自定义插进去的数据,就需要做fixture,而且做的时候,不要把系统自动添加的数据做上,否则会导致测试中的系统自动添加行为失败。

4、自建permission数据的准备问题:因为permission引用的contentype数据和生产库的实际数据是有可能有区别的,主要是ID顺序不同,所以,permission的contenttypeID需要手动查找合适的contenttype,然后修改到fixtures里面

5、文本比对一定要从正确输出的HTML截取字符串,从浏览器的某些界面下copy的字符串文本比对会出错误,当然除了文本比对,django testcase还提供了其他几种结构化数据的比对方式。

6、像问题4中的数据,还有那种有及时性要求的数据,可以在Test代码中手动往数据里添加,然后再做相关的测试操作。

7、使用StaticLiveServerTestCase的时候,出现以下错误:

  1. Hint: Look at the output of 'django-admin sqlflush'. That's the SQL this command wasn't able to run.
  2. The full error: cannot truncate a table referenced in a foreign key constraint
  3. DETAIL:  Table "users" references "analyst_analyst".
  4. HINT:  Truncate table "users" at the same time, or use TRUNCATE ... CASCADE.

通过查看TestCase源码,在类中定义非空的available_apps列表配置,就可以解决这个问题。添加的时候,要把能用到的都添加上,否则可能会报错,TestCase没有这个问题

8、我使用的是WebDriver里面的ChromeDriver,除了pip安装selenium以外,还需要到 https://sites.google.com/a/chromium.org/chromedriver/downloads 页面下载最新的chromedriver,解压以后是个可执行文件,把那个文件扔到随便那个系统PATH目录下即可。

9、在使用StaticLiveServerTestCase的时候,又报以下错误:

  1. No translation files found for default language zh-cn

解决方法:在settings里面添加配置:

  1. LOCALE_PATHS = [BASE_DIR]

然后在这个项目根目录BASE_DIR中添加/zh-CN/LC_MESSAGES/django.po

Django单元测试简明实践的更多相关文章

  1. Django Channels简明实践

    1.安装,如果你已经安装django1.9+,那就不要用官方文档的安装指令了,把-U去掉,直接用: sudo pip install channels 2.自定义的普通Channel的名称只能包含a- ...

  2. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  3. django单元测试

        django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...

  4. [Django] 单元测试小记

    从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合理,单元测试写起来就麻烦的多呀.公司的项目一直都是用Dj ...

  5. Spring Security简明实践及相关国际化处理

    别人的都是最佳实践,因为我目前的设置没有按照参考文档推荐,还是采用DelegatingFilterProxy,所以我只能说简明实践.先贴我的applicationContext-security.xm ...

  6. 如何进行Django单元测试

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

  7. Django入门与实践 17-26章总结

    Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...

  8. Django 单元测试

    mock 测试 mock 是辅助单元测试的模块,用于测试不方便调用的别人的接口.举个简单的例子,比如说,我们测试django 写的微信登录接口,正常流程下,我们需要前端拉起授权窗口,获取jscode或 ...

  9. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

随机推荐

  1. 深度剖析malloc、free和new、delete

    1.malloc,free是C语言的函数,而new,delete是操作符,属于C++的语法,一定注意这两个不再是函数了,而是操作符. 2.malloc和new对于分配基础类型变量和数组变量,它们除了语 ...

  2. EBS DBA指南笔记(一)

    第一章  ORACLE APPLICATIONS 的组件与架构 1.ebs组件的几大构成:客户端,form server,web server,concurrent processor,数据库.每个组 ...

  3. noSQL数据库相关软件介绍(大数据存储时候,必须使用)

    目前图数据库软件七种较为流行:Neo4J, Infinite Graph, DEX,InfoGrid, HyperGraphDB, Trinity, AllegroGraph(http://tech. ...

  4. 使用js控制表单重复提交(1加锁,2事件方式,3 EasyUI中解决表单重复提交)

    方法一. var flag = true; $(function() { $("#interested").click(function() { beInterested(); } ...

  5. 【算法导论】B树

          一棵B树T是具有如下性质的有根树(设根为root): 1.每个节点x有一下域: (a)num,当前存储在节点x的关键字个数,关键字以非降序存放,因此key[i]<=key[i+1]& ...

  6. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十一)

    现在游戏中如果钱用光了赌场也是不管的,所以我们要加上Game Over的逻辑. 出现游戏结束条件很简单,就是GameState的totalMoney <= 0.而在游戏结束时我们要做些什么呢?有 ...

  7. 学习pthreads,使用互斥量进行同步

    在进行多线程编程时,我们总会遇到全局变量和数据结构的问题,这是多线程之间进行通信的问题.如果多个线程同时读写一个全局变量,那么会造成竞争或者出错.为了解决这一问题,我们需要对全局数据进行,使用互斥量实 ...

  8. NSAttributedString富文本简单介绍和常用方法浅析

    NSAttributedString基本知识点介绍 1.初始化方法 - (instancetype)initWithString:(NSString *)str; - (instancetype)in ...

  9. 《java入门》第一季之类(String类字符串一旦被赋值就没法改变)

    毫无疑问,String类是java里面最重要的类之一.因此它有很多方法需要了解和掌握. 字符串一旦被赋值,值就不能发生改变: package cn.itcast_02; /* * 字符串的特点:一旦被 ...

  10. 使用Android Support Design 控件TabLayout 方便快捷实现选项卡功能

    1.概述 TabLayout是在2015年的google大会上,google发布了新的Android Support Design库的新组件之一,以此来全面支持Material Design 设计风格 ...