详解Python nose单元测试框架的安装与使用


Posted in Python onDecember 20, 2017

本文介绍了Python nose单元测试框架的安装与使用 ,分享给大家,具体如下:

安装(Python2下安装)

pip install nose

原理与命名规则

Nose会自动查找源文件、目录或者包中的测试用例,符合正则表达式(?:^|[\b_\.%s-])[Tt]est,以及TestCase的子类都会被识别并执行。

例如:我们可以将python脚本文件名以“_test”结尾或包含“_test_”,方法名以“_test”结尾。

使用方法

查看所有nose相关命令:

nosetests -h

执行并捕获输出:

nosetests -s

查看nose的运行信息和调试信息:

nosetests -v9

输出xml结果报告:

nosetests --with-xunit

支持测试方法传参:

1)安装:需要下载插件“nose_ittr”:

pip install nose_ittr

2)脚本中使用示例:

# -*- coding: utf-8 -*-
import os
from nose.tools import nottest,istest
from nose_ittr import IttrMultiplier, ittr
curr_dir = os.path.dirname(os.path.abspath(__file__))
class TestCheckChannels(object):
  __metaclass__ = IttrMultiplier
  '''
    测试方法传入两个参数
    参数一:channels_txt_name
    参数二:check_list_txt_name
    使用方法:通过“self.参数名”进行调用
  '''
  @istest
  @ittr(channels_txt_name=["channels.txt"],check_list_txt_name=["check_list.txt"]) 
  def test_check_channels(self):
    channels_txt_path = os.path.join(curr_dir,self.channels_txt_name)
    check_list_txt_path = os.path.join(curr_dir,self.check_list_txt_name)
    the_channels = []
    with open(channels_txt_path) as channels:
      for line in channels.readlines():
        line = line.strip()
        if line != '':
          the_channels.append(line)
    with open(check_list_txt_path) as check_list:
      check_items = check_list.readlines()
      for check_item in check_items:
        if check_item.strip() in the_channels:
          pass
        elif check_item=='\n':
          pass
        else:
          print check_item

3)执行示例:

nosetests --with-html-output --html-out-file=result1.html -v --with-setup-ittr

以上执行将输出html结果报告,但是需要先安装插件:

1)安装:

需要下载插件,在解压缩后在命令行中cd到该目录下:

python setup.py install

通过命令行安装:

pip install nosehtmloutput-2
pip install nose-html-reporting

2)在待测路径打开cmd使用命令如下,就可以执行测试并生成测试结果html文件了:

nosetests --with-html-output --html-out-file=result1.html

工具nose.tools的使用:

1)测试脚本中引入:from nose.tools import nottest,istest;

2)不测试的方法:方法名上加修饰器@nottest;

3)指定为测试方法:方法名上加修饰器@istest(方法名无需符合命名规则);

4)查看要执行的用例列表:nosetests --collect-only -v。

测试项目

 详解Python nose单元测试框架的安装与使用

脚本示例

from nose.tools import nottest,istest
from nose.tools import assert_equal

class TestClass:
  def test_one(self):
    x = "this"
    assert 'h' in x
  def test_two(self):
    x = "hello"
    assert hasattr(x, 'check')
  @nottest
  def test_three(self):
    assert True
  @istest
  def xxxxx(self):
    assert True

class test_haha():
  def setUp(self):
    print("============test class setup==============")
  def teardown(self):
    print("============test class teardown==============")
  def test_xxx(self):
    print "test_xxx"
    assert_equal(9, 9)
  def test_kkk(self):
    print "test_kkk"
    assert_equal(1, 1)

测试执行

详解Python nose单元测试框架的安装与使用 

测试结果

详解Python nose单元测试框架的安装与使用 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
对Python3 序列解包详解
Feb 16 Python
使用pandas读取文件的实现
Jul 31 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
python线程定时器Timer实现原理解析
Nov 30 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
使用python计算三角形的斜边例子
Apr 15 Python
Python调用.net动态库实现过程解析
Jun 05 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
Python实现简单猜数字游戏
Feb 03 Python
使用python实现knn算法
Dec 20 #Python
python实现kNN算法
Dec 20 #Python
解析Python中的eval()、exec()及其相关函数
Dec 20 #Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 #Python
简单了解Django模板的使用
Dec 20 #Python
python机器学习之决策树分类详解
Dec 20 #Python
python机器学习之神经网络(三)
Dec 20 #Python
You might like
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP实现货币换算的方法
2014/11/29 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python每天必学之bytes字节
2016/01/28 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Python编程求质数实例代码
2018/01/31 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
企业消防安全制度
2014/02/02 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
道德模范事迹材料
2014/12/20 职场文书
迎国庆主题班会
2015/08/17 职场文书
实现GO语言对数组切片去重
2022/04/20 Golang
MySQL优化之慢日志查询
2022/06/10 MySQL