详解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 25 Python
使用Python中的greenlet包实现并发编程的入门教程
Apr 16 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
Python部署web开发程序的几种方法
May 05 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
python如何利用paramiko执行服务器命令
Nov 07 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函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
PHP常用的三种设计模式
2017/02/17 PHP
php验证码生成器
2017/05/24 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
仓库理货员岗位职责
2013/12/18 职场文书
安全生产投入制度
2014/01/29 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
运动会100米广播稿
2015/08/19 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技