先说需求:1、测试django项目;2、打印测试报告(html格式)
有以下几种测试方法:
1、django自带的测试模块。在app目录下的tests.py文件中写测试类,类似这样:

class MyTest(TestCase):
  def setUp(self):
    dosomething()

  def test_case1(self):
    self.assertEqual(1, 1)

  def test_case2(self):
    pass

然后直接在项目目录下运行python manager.py test。理想状态下,控制台会打印出assert失败的case。但是没有办法把结果输出成html格式(也可能有我不知道的黑科技,google不到)。

2、nose + django-nose + nose-htmloutput。python下比较著名的测试框架nose,加上插件nose-htmloutput,可以把测试报告以html格式输出,再用django的nose插件(django-nose)把nose集成到django中。使用姿势:
django项目的setting.py:

INSTALLED_APPS = [
  ...
  'django_nose'
  ]

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

  项目依赖:
  pip install nose
  pip install django-nose
  pip install nose-htmloutput
  测试命令:python manager.py test --with-html --html-file=/path/to/htmlfile。
  到此为止可以满足大部分需求,然而由于我项目的特殊性(详见http://www.cnblogs.com/beeler/p/6743171.html),这种测试方式出问题了。首先说特殊性,简单来说,就是我的项目中会出现多线程访问数据库的场景,如果使用TestCase,主线程对数据库做的修改并不能从其他线程中访问到,为解决这个问题,必须使用 TransactionTestCase + 非内存数据库 的方法进行测试;其次说问题,在上述的设置下,使用django_nose.NoseTestSuiteRunner会出现错误,大意是文件数据库无法创建(目测是个nose的bug,但是错误比较底层,能力所限,没能解决)。为解决这个问题,看了一下django-nose的源码,发现了不止NoseTestSuiteRunner这一个runner,于是试了一下另外的runner:BaseRunner和BasicNoseRunner。BaseRunner可以运行但不能输出html报告,BasicNoseRunner和NoseTestSuiteRunner一样的错误。

3、直接用nose测试django项目。不用python manager.py test命令,而用nosetests加载tests.py进行测试。测试需要django环境,所以在tests.py开头加上:
  import os
  os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

  import django
  django.setup()

运行命令 nosetests --with-html --html-file=/path/to/htmlfile

直接用nose进行django项目测试并输出html报告的更多相关文章

  1. Linux Django项目测试

    步骤 django项目: 依赖包 [root@web01 ~]# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readli ...

  2. uwsgi+nginx部署django项目

    1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2  ...

  3. 直接用postman测试api ,服务器端没提供跨域也可以访问。

    1. 直接用postman测试api ,服务器端没提供跨域也可以访问. 但是,如果用本地的 sever 搭的server, 然后去访问api的话,浏览器会提示 跨域错误.

  4. ubuntu下配置Apache+mod_wsgi+Django项目(个人测试)

    经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题) 这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件.只能供大家参 ...

  5. django第8天(在测试文件中运行django项目|单表操作)

    django第8天 在测试文件中运行django项目 1.将项目配置文件数据库该为mysql,修改配置信息 PORT = '127.0.0.1' DATABASES = { 'default': { ...

  6. django 第一个项目测试

    我们安装好Django以后就可以使用Django命令来创建项目了 1.Django 创建第一个项目 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.py.我们可以 ...

  7. 统计 Django 项目的测试覆盖率

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...

  8. 打造专属测试平台4-使用Docker部署Django项目

    编写完项目代码后,为了稳定的运行,需要将其部署至服务器.这里我选择了Docker去部署Django后端代码. 首先来看看Runoob对Docker的介绍: Docker 是一个开源的应用容器引擎,基于 ...

  9. 测试开发之Django——No5.Django项目的部署(CentOS7+nginx)

    配置环境:CentOS7 1.安装python3环境 默认的CentOS7系统中,会安装python2.7的版本,由于Django2.0并不支持python2.7的版本,所以我们需要自己在系统中安装p ...

随机推荐

  1. java学习笔记 --- 异常

    异常 (1)程序出现的不正常的情况. (2)异常的体系   Throwable    |--Error  错误,严重问题,我们不处理.    ·    |--Exception 异常     |--R ...

  2. java学习笔记 --- 条件,循环语句

    一.三元运算符 A:格式    比较表达式?表达式1:表达式2;   B:执行流程:    首先计算比较表达式的值,看是true还是false.    如果是true,表达式1就是结果.    如果是 ...

  3. iOS开发之Autolayout

    1.概述 在以前的iOS程序中,是如何设置布局UI界面的? (1)经常编写大量的坐标计算代码 (2)为了保证在3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时还需要分别为2种屏幕 ...

  4. 任务调度之持久化(基于Quartz.net)

    上一篇我们了解了任务调度及他的远端管理方式,传送门:任务调度及远端管理(基于Quartz.net) 这篇我们要完成任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什 ...

  5. 彻底理解容器类(2)------- AbstractCollection深入了解

    h2 { background-color: Skyblue } AbstractCollection认识 AbstractCollection是Collection接口的抽象实现.实现了一部分Col ...

  6. artemplate使用

    最近写了一个菜谱展示的网页,其中用到了artemplate模板,关于artemplate的好处就不多说了,直接上干货 1. <script src="js/template-nativ ...

  7. 【JavaWeb】Session(转)

    Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自 ...

  8. cookie技术简介

    Cookie简介 众所周知,HTTP协议是一个无状态的协议.一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义.用户在浏览器的地址栏输入页面的URL,浏览器就会向Web Server ...

  9. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 5

    看这段代码之前还是请回到“图13-6-1 NotesList控件列表”中重温一下一个控件的每个属性名和值是怎么组织起来的: android.widget.FrameLayout@41901ab0 dr ...

  10. 老李推荐:第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本

    老李推荐:第5章3节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...