Django单元测试简明实践
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的时候,出现以下错误:
- Hint: Look at the output of 'django-admin sqlflush'. That's the SQL this command wasn't able to run.
- The full error: cannot truncate a table referenced in a foreign key constraint
- DETAIL: Table "users" references "analyst_analyst".
- 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的时候,又报以下错误:
- No translation files found for default language zh-cn
解决方法:在settings里面添加配置:
- LOCALE_PATHS = [BASE_DIR]
然后在这个项目根目录BASE_DIR中添加/zh-CN/LC_MESSAGES/django.po
Django单元测试简明实践的更多相关文章
- Django Channels简明实践
1.安装,如果你已经安装django1.9+,那就不要用官方文档的安装指令了,把-U去掉,直接用: sudo pip install channels 2.自定义的普通Channel的名称只能包含a- ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- django单元测试
django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...
- [Django] 单元测试小记
从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合理,单元测试写起来就麻烦的多呀.公司的项目一直都是用Dj ...
- Spring Security简明实践及相关国际化处理
别人的都是最佳实践,因为我目前的设置没有按照参考文档推荐,还是采用DelegatingFilterProxy,所以我只能说简明实践.先贴我的applicationContext-security.xm ...
- 如何进行Django单元测试
如何进行Django单元测试 Django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试.类名为django.test.TestCase,继承于python的un ...
- Django入门与实践 17-26章总结
Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...
- Django 单元测试
mock 测试 mock 是辅助单元测试的模块,用于测试不方便调用的别人的接口.举个简单的例子,比如说,我们测试django 写的微信登录接口,正常流程下,我们需要前端拉起授权窗口,获取jscode或 ...
- 【转】.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 ...
随机推荐
- EBS DBA指南笔记(三)
第五章 patching patch的作用:解决应用代码的问题:安装新的特征:更新technology stack组件.打patch不是一个简单的过程,但我们也没必要深究里面每个细节. EBS的p ...
- 检查app的activity是否在当前
APP开发中经常会遇到这种需求,需要检查当前的APP是不是可见的,比如,如果是可见的就维持一个socket长连接,如果切到后台不可见了,就断开这个连接.Android本来并不允许APP去监听home键 ...
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
. Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...
- Android Studio JNI javah遇到的问题
好久没写博客了.持之以恒的勋章也被收回了.以后要好好坚持.. 最近在学习jni,但是遇到了一点麻烦的问题.好在终于解决了,便记下来解决一下. 其他入门的jni文章有很多,这里便不在累赘,直接上我遇到的 ...
- SpriteBuilder中CCB精灵对象的Sprite frame为什么有时候不能修改
有时候你会发现CCB中的精灵对象(root节点)的Sprite frame是灰色的,不能修改.因为它是根对象,所以不存在被嵌入其他CCB的情况,那到底是什么原因呢? 可以发现此时的Timeline当前 ...
- 使用API获取(默认付款条件和到期日)
1. 目的:使用API取到应收事务处理的付款条件(实现标准功能的付款条件和到期日)2. 实现方法:调用 ARP_TRX_DEFAULTS_3.get_term_default获得付款条件 3.实现代码 ...
- 一张图解释NIO原理
- Linux - man page
使用man date来查看date命令的详细信息. lucifer@lucifer-virtual-machine:~$ man date DATE(1) User Commands DATE(1) ...
- SlopOne 改进
lope One 其基本的想法来自于简单的一元线性模型 $w = f(v) = v + b$.已知一组训练点 ${(v_i, w_i)}_{i=1}^n$,利用此线性模型最小化预测误差的平方和,我们可 ...
- 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章
菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...