详解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 相关文章推荐
wxPython中文教程入门实例
Jun 09 Python
python中assert用法实例分析
Apr 30 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
Pycharm安装python库的方法
Nov 24 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
如何在PHP中使用数组
2020/06/09 PHP
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
简述JS控制台的使用
2018/07/15 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
python 读写、创建 文件的方法(必看)
2016/09/12 Python
python区块及区块链的开发详解
2019/07/03 Python
python支持多线程的爬虫实例
2019/12/21 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
中介公司区域经理岗位职责范本
2014/03/02 职场文书
篝火晚会策划方案
2014/05/16 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2014年教务工作总结
2014/12/03 职场文书
学生检讨书怎么写
2015/05/07 职场文书
学习经验交流会总结
2015/11/02 职场文书
python 如何用terminal输入参数
2021/05/25 Python
Python 阶乘详解
2021/10/05 Python