详解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中scatter函数参数及用法详解
Nov 08 Python
python在每个字符后添加空格的实例
May 07 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
Python实现分段线性插值
Dec 17 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
python系列 文件操作的代码
Oct 06 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
python excel多行合并的方法
Dec 09 Python
Python经典五人分鱼实例讲解
Jan 04 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
PHP静态成员变量
2017/02/14 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
AngularJS实现表单验证功能详解
2017/10/12 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
自主招生自荐信
2013/12/08 职场文书
1亿有多大教学反思
2014/05/01 职场文书
会议室标语
2014/06/21 职场文书
敬老月活动总结
2014/08/28 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
英文感谢信范文
2015/01/21 职场文书
理解python中装饰器的作用
2021/07/21 Python