详解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 装饰器功能以及函数参数使用介绍
Jan 27 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
python编程开发之日期操作实例分析
Nov 13 Python
Python操作MongoDB详解及实例
May 18 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
基于Django用户认证系统详解
Feb 21 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
Python Parser的用法
May 12 Python
python3读取文件指定行的三种方法
May 24 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
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
php返回json数据函数实例
2014/10/09 PHP
php解决安全问题的方法实例
2019/09/19 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
使用python实现链表操作
2018/01/26 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Django框架模板用法入门教程
2019/11/04 Python
优秀员工自荐书范文
2013/12/08 职场文书
上班看电影检讨书
2014/02/12 职场文书
村容村貌整治方案
2014/05/21 职场文书
2015年幼师工作总结
2015/04/28 职场文书
退休欢送会主持词
2015/07/01 职场文书
春节慰问简报
2015/07/21 职场文书
车间安全生产管理制度
2015/08/06 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书