详解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编程之string相关操作实例详解
Jul 22 Python
python tornado微信开发入门代码
Aug 24 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python中使用input()函数获取用户输入值方式
May 03 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
浅析python 字典嵌套
Sep 29 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
Python中npy和mat文件的保存与读取
Apr 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
用PHP+MySql编写聊天室
2006/10/09 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
PHP7 list() 函数修改
2021/03/09 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
Angular工具方法学习
2016/12/26 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
python在指定目录下查找gif文件的方法
2015/05/04 Python
详解Python编程中time模块的使用
2015/11/20 Python
Django web框架使用url path name详解
2019/04/29 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Python运行DLL文件的方法
2020/01/17 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
Python 实现集合Set的示例
2020/12/21 Python
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
市场营销专业推荐信
2013/11/03 职场文书
机关门卫制度
2014/02/01 职场文书
合伙经营协议书范本
2014/09/13 职场文书
活动经费申请报告
2015/05/15 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL