详解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中优化NumPy包使用性能的教程
Apr 23 Python
详解Python中time()方法的使用的教程
May 22 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
Python控制Firefox方法总结
Jun 03 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
tensorflow如何批量读取图片
Aug 29 Python
Python操作Sonqube API获取检测结果并打印过程解析
Nov 27 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 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的FTP学习(三)
2006/10/09 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python httplib模块使用实例
2015/04/11 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
使用python去除图片白色像素的实例
2019/12/12 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
python中time.ctime()实例用法
2021/02/03 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
家长给老师的道歉信
2014/01/13 职场文书
综艺节目策划方案
2014/06/13 职场文书
八一建军节演讲稿
2014/09/10 职场文书
采购员岗位职责
2015/02/03 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js