详解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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
python求列表交集的方法汇总
Nov 10 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
详解python3类型注释annotations实用案例
Jan 20 Python
python中操作文件的模块的方法总结
Feb 04 Python
用python删除文件夹中的重复图片(图片去重)
May 12 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代码简化
2010/02/08 PHP
php操作xml
2013/10/27 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
JS实现网页端猜数字小游戏
2020/03/06 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
Python base64编码解码实例
2015/06/21 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
Python如何读写CSV文件
2020/08/13 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
python简单实现插入排序实例代码
2020/12/16 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
物流合作计划书
2014/01/10 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
小学家长意见怎么写
2015/06/03 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书