详解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类定义和类继承详解
May 08 Python
Python在线运行代码助手
Jul 15 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
Python用input输入列表的实例代码
Feb 07 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
如何搭建pytorch环境的方法步骤
May 06 Python
Python 在函数上添加包装器
Jul 28 Python
pytorch 如何使用amp进行混合精度训练
May 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
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
三种Node.js写文件的方式
2016/03/08 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
js实现双色球效果
2020/08/02 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python内置函数delattr的具体用法
2017/11/23 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
Pytorch中.new()的作用详解
2020/02/18 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
2014大学生全国两会学习心得体会
2014/03/13 职场文书
集中采购方案
2014/06/10 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
详解python的内存分配机制
2021/05/10 Python
html5调用摄像头实例代码
2021/06/28 HTML / CSS