先说需求: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. iOS开发之文件(分段)下载

    1.HTTP HEAD方法 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 t ...

  2. letter-spacing+first-letter实现按钮文字隐藏

    本文地址:http://www.zhangxinxu.com/wordpress/?p=3557 一.文不在长,有货则灵 图片式按钮的文字隐藏看来是大家都比较关注的一个问题(分享讨论.微博转发等可见一 ...

  3. 老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典

    前面两篇(简单运维1.简单运维2)介绍了一些Windows Server Docker相关的基本运维知识.今天这一篇,Windows Server Dockerfile葵花宝典,涵盖了许多典型场景的W ...

  4. laravel 框架memcache的配置

    Laravel5框架在Cache和Session中不支持Memcache,看清了是Memcache而不是Memcached哦,MemCached是支持的但是这个扩展真的是装的蛋疼,只有修改部分源码让其 ...

  5. 4.Maven仓库

    1. 何为Maven仓库 Maven仓库就是统一存放所有依赖的地方,其他所有项目都可以在仓库里通过坐标找到所需要的依赖. 2. 仓库的布局 任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中 ...

  6. 【Spring】详解Spring中Bean的加载

    之前写过bean的解析,这篇来讲讲bean的加载,加载要比bean的解析复杂些,该文之前在小编原文中有发表过,要看原文的可以直接点击原文查看,从之前的例子开始,Spring中加载一个bean的方式: ...

  7. ASP.NET Core 网站发布到Linux服务器

    长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台,这就使得.NET空有一身绝技但无法得到广大的施展空间,.N ...

  8. MySQL学习笔记(四)—存储过程

    一.概述      存储过程是数据库定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程可以避免开发人员重复的编写相同的SQL语句,而且存储过程是在MySq ...

  9. SpringMVC基础学习(一)—初识SpringMVC

    一.HelloWorld 1.导入SpringMVC所需的jar包        2.配置web.xml      配置DispatcherServlet.DispatcherServlet默认加载/ ...

  10. 1147: 零起点学算法54——Fibonacc

    1147: 零起点学算法54--Fibonacc Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 20 ...