详解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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
Python实现批量下载图片的方法
Jul 08 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
keras打印loss对权重的导数方式
Jun 10 Python
python和php哪个容易学
Jun 19 Python
python属于哪种语言
Aug 16 Python
Python中的套接字编程是什么?
Jun 21 Python
Elasticsearch 批量操作
Apr 19 Python
python数字图像处理之图像自动阈值分割示例
Jun 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
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
浅谈Python单向链表的实现
2015/12/24 Python
python中Apriori算法实现讲解
2017/12/10 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
python怎么提高计算速度
2020/06/11 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
中软Java笔试题
2012/11/11 面试题
党员志愿者活动方案
2014/08/28 职场文书
送达通知书
2015/04/25 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
情况说明书格式及范文
2019/06/24 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
Python 文字识别
2022/05/11 Python