详解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和pygame绘制繁花曲线的方法
Feb 24 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
python多线程并发及测试框架案例
Oct 15 Python
关于sys.stdout和print的区别详解
Dec 05 Python
Python实现中值滤波去噪方式
Dec 18 Python
python如何通过pyqt5实现进度条
Jan 20 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
Pycharm Git 设置方法
Sep 15 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
python在协程中增加任务实例操作
Feb 28 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
python自然语言编码转换模块codecs介绍
2015/04/08 Python
python pandas时序处理相关功能详解
2019/07/03 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
幼儿园运动会入场词
2014/02/10 职场文书
入股协议书范本
2014/04/14 职场文书
大学新生入学教育方案
2014/05/16 职场文书
会议欢迎词范文
2015/01/27 职场文书
早恋主题班会
2015/08/14 职场文书
八年级作文之感恩
2019/11/22 职场文书