先说需求: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. Spring MVC ajax:post/get 的具体实现

    Post 方式 1.自动注入 a. pom.xml ---- 配置Maven,添加必要的jar包 <!--用于 String-JSONObject 转换 --> <dependenc ...

  2. input是否checked与使用jquery的attr或prop方法无关

    最近在项目中有这样一个需求,用户在下单时可以选择优惠券,也可取消选择,并且可以多次选择,取消. 这是一个典型的input标签checked功能,博主使用radio元素实现此需求,但是优惠券只能选中,不 ...

  3. apache的配置参数

    #ErrorDocument 500 "The server made a boo boo."#ErrorDocument 404 /missing.html 1.Document ...

  4. HTML基础学习(一)—HTML

    一.HTML的介绍      HTML(HyperText Markup Language)超文本标记语言,不是一种编程语言,而是一种描述性的标记语言,用于描述超文本的内容的显示,比如字体颜色或者大小 ...

  5. android中全局异常捕捉

    android中全局异常捕捉 只要写代码就会有bug,但是我们要想办法收集到客户的bug.有第三方bugly或者友盟等可以收集.但是,android原生就提供了有关收集异常的api,所以我们来学习一下 ...

  6. FPGA中将十进制数在数码管中显示(verilog版)--二进制转换为BCD码

    这周有朋友问怎样在fpga中用数码管来显示一个十进制数,比如1000.每个数码管上显示一位十进制数.如果用高级语言来分离各位,只需要分别对该数做1000,100,10对应的取商和取余即可分离出千百十个 ...

  7. xxxxxxxxxxxxxx

    一.Linux命令的分类 1.内部命令:属于Shell解释器的一部分 2.外部命令:独立于Shell解释器之外的程序 3.type命令,查看命令是外部命令还是内部命令: [root@www ~]# t ...

  8. 从零到实现Shiro中Authorization和Authentication的缓存

    本文大纲 一.简介 二.缓存的概念 三.自定义实现缓存机制 四.什么是Ehcache 五.Ehcache怎么用 六.Spring对缓存的支持 七.Spring+Ehcache实现 八.Spring+S ...

  9. 使用nodejs进行WEB开发

    这里,准备从零开始用nodejs实现一个微博系统.功能包括路由控制.页面模板.数据库访问.用户注册.登录.用户会话等内容. 将会介绍Express框架.MVC设计模式.ejs模板引擎以及MongoDB ...

  10. ASP.NET MVC4 微信公众号开发之网页授权(二):通过公众号AppID(应用ID)和AppSecret(应用密钥)取得网页授权openid

    ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境 通过了上一篇文章我们已经搭建好了基础开发大环境,现在打开开发环境这里我用的是 vs2013,通过如下方式: 拼接请求链接重定向到 ...