详解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中的字典容器
Apr 14 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
python用户管理系统
Mar 13 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Python求平面内点到直线距离的实现
Jan 19 Python
Python集合操作方法详解
Feb 09 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
Django使用Profile扩展User模块方式
May 14 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
python高温预警数据获取实例
Jul 23 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之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
PHP数组操作类实例
2015/07/11 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
Element Input组件分析小结
2018/10/11 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
python学习数据结构实例代码
2015/05/11 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
Django添加sitemap的方法示例
2018/08/06 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
python进阶之自定义可迭代的类
2019/08/20 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
企业宣传标语
2014/06/09 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
运动会主持人开幕词
2016/03/04 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL