三、nose的测试工具集

nose.tools模块提供了一系列的小工具,包括测试执行时间、异常输出及unittest框架中所有的assert功能。

为了使写用例更加容易,nose.tools提供了部分便利的功能函数,下面写几个常用的,如下:

nose.tools.ok_(expr, msg=None)

标准的assert,例子如下:

from nose.tools import eq_

def test_lean_2():
print "test_learn_2"
ok_(4==3,msg="Error")

运行结果如下:

E:\workspace\nosetest_lear\test_case>nosetests -v test_case_0001:test_lean_2
test_case_0001.test_lean_2 ... FAIL ======================================================================
FAIL: test_case_0001.test_lean_2
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "E:\workspace\nosetest_lear\test_case\test_case_0001.py", line 26, in tes
t_lean_2
ok_(4==3,msg="xxx")
AssertionError: xxx
-------------------- >> begin captured stdout << ---------------------
test_learn_2 --------------------- >> end captured stdout << ---------------------- ----------------------------------------------------------------------
Ran 1 test in 0.045s FAILED (failures=1) E:\workspace\nosetest_lear\test_case>

nose.tools.eq_(a, b, msg=None)

将参数a与b快速对比

from nose.tools import eq_

def test_learn_1():
eq_(5, 6, msg="Wrong")

运行结果如下:

======================================================================
FAIL: test_case_0001.test_learn_1
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "E:\workspace\nosetest_lear\test_case\test_case_0001.py", line 20, in tes
t_learn_1
eq_(5, 6, msg="Wrong")
AssertionError: Wrong

nose.tools.assert_in(member, container, msg=None)

代码如下:

from nose.tools import assert_in
def test_lean_5():
assert_in("aaa",'bbb',msg="test in failed")

运行结果如下:

======================================================================
FAIL: test_case_0002.test_lean_5
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "E:\workspace\nosetest_lear\test_case\test_case_0002.py", line 24, in tes
t_lean_5
assert_in("aaa",'bbb',msg="test in failed")
AssertionError: test in failed ----------------------------------------------------------------------

其它的assert这里就不说了,nose.tools包含很多内容,可以直接查询。

下面再介绍几个有用的nose.tools工具

nose.tools.set_trace()

-------------单步调试工具,在多个模块,大程序时这个功能好用。内部使用的是pdb.set_trace

代码如下:

from nose.tools import assert_in
from nose.tools import set_trace def test_lean_5():
set_trace()
assert_in("aaa",'bbb',msg="test in failed")

结果如下:

test_case_0002.test_lean_5 ... > e:\workspace\nosetest_lear\test_case\test_case_
0002.py(26)test_lean_5()
-> assert_in("aaa",'bbb',msg="test in failed")
(Pdb) n
AssertionError: Assertio...failed',)
> e:\workspace\nosetest_lear\test_case\test_case_0002.py(26)test_lean_5()
-> assert_in("aaa",'bbb',msg="test in failed")
(Pdb) n
--Return--
> e:\workspace\nosetest_lear\test_case\test_case_0002.py(26)test_lean_5()->None
-> assert_in("aaa",'bbb',msg="test in failed")
(Pdb) n
AssertionError: Assertio...failed',)
> c:\python27\lib\site-packages\nose\case.py(197)runTest()
-> self.test(*self.arg)
(Pdb) c
FAIL
0002 test teardown ======================================================================
FAIL: test_case_0002.test_lean_5
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "E:\workspace\nosetest_lear\test_case\test_case_0002.py", line 26, in tes
t_lean_5
assert_in("aaa",'bbb',msg="test in failed")
AssertionError: test in failed

具体的pdb调试手段可参见http://www.cnblogs.com/chencheng/archive/2013/07/07/3161778.html

nose.tools.timed(limit)

测试必须在设定的时间内(以秒为单位)完成 ,否则测试失败;代码如下:

from nose.tools import timed
import time @timed(1)
def test_lean_5():
time.sleep(2)
pass

测试结果如下:

test_case_0002.test_lean_5 ... FAIL

======================================================================
FAIL: test_case_0002.test_lean_5
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "c:\python27\lib\site-packages\nose\tools\nontrivial.py", line 100, in ne
wfunc
raise TimeExpired("Time limit (%s) exceeded" % limit)
TimeExpired: Time limit (1) exceeded ----------------------------------------------------------------------
Ran 1 test in 2.006s FAILED (failures=1)

nose.tools中还有很多assert的函数工具,不一一介绍了,列出表如下,需要的时候可以使用。

assert_equal(first, second, msg=None) 两个对像对比,使用"=="操作对比
assert_not_equal(first, second, msg=None) 不相等
assert_true(expr, msg=None) 判定表达式是否为真
assert_false(expr, msg=None) 判定表达式是否为假
assert_is(expr1, expr2, msg=None) expr1 is expr2
assert_is_not(expr1, expr2, msg=None)  
assert_is_none(obj, msg=None) 为空
assert_is_not_none(obj, msg=None) 不为空
assert_in(member, container, msg=None) merber in container判断
assert_not_in(member, container, msg=None) 不包含判断
assert_is_instance(obj, cls, msg=None)  
assert_not_is_instance(obj, cls, msg=None)  

assert_raises_regexp(expected_exception, expected_regexp,
callable_obj=None, *args, **kwargs)

 
assert_almost_equal(first, second, places=None, msg=None, delta=None)  
assert_greater(a, b, msg=None)  
assert_greater_equal(a, b, msg=None)  
assert_less(a, b, msg=None)  
assert_less_equal(a, b, msg=None)  
assert_regexp_matches(text, expected_regexp, msg=None)  
assert_not_regexp_matches(text, unexpected_regexp, msg=None)  
assert_items_equal(expected_seq, actual_seq, msg=None)  
assert_dict_contains_subset(expected, actual, msg=None)  
assert_multi_line_equal(first, second, msg=None)  
assert_sequence_equal(seq1, seq2, msg=None, seq_type=None)  
assert_list_equal(list1, list2, msg=None)  
assert_tuple_equal(tuple1, tuple2, msg=None)  
assert_set_equal(set1, set2, msg=None)  
assert_dict_equal(d1, d2, msg=None)  

下节将介绍nose的内置插件的使用

python nose测试框架全面介绍三的更多相关文章

  1. python nose测试框架全面介绍十---用例的跳过

    又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...

  2. python nose测试框架全面介绍七--日志相关

    引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...

  3. python nose测试框架全面介绍六--框架函数别名

    之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...

  4. python nose测试框架全面介绍五--attr介绍

    之前写了一系列nose框架的,这篇介绍下attr tag 在nose框架中attr用来标识用例,使得在运行时可以通过标识来执行用例,之前在nose测试框架全面介绍四中有说明,但没有说明清楚,这里再总结 ...

  5. python nose测试框架全面介绍一

    一.简介      nose 是python自带框架unttest的扩展,使测试更简单高效:nose是一个开源的项目,可以在官网上下载源码 1.快速安装 有以下几中安装方式: easy_install ...

  6. python nose测试框架全面介绍十二 ----用例执行顺序打乱

    在实际执行自动化测试时,发现我们的用例在使用同一个资源的操作时,用例的执行顺序对测试结果有影响,在手工测试时是完全没法覆盖的. 但每一次都是按用例名字来执行,怎么打乱来执行的. 在网上看到一个有意思的 ...

  7. python nose测试框架全面介绍四

    四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_do ...

  8. python nose测试框架全面介绍二

    二.基本使用 nosetest脚本的使用(在安装完nose之后) nosetests [options] [(optional) test files or directories] 我们可以使用配置 ...

  9. python nose测试框架全面介绍十三 ---怎么写nose插件

    之前有一篇文章介绍了自己写的插件 nose进度插件,但最近有朋友问我,看着nose的官方文档写的插件没用,下面再详细介绍一下 一.准备 1.新建一个文件夹,随便文件夹的名字,假设文件夹放在f://aa ...

随机推荐

  1. Asp.net mvc怎么在razor里写js代码

    我试图在Razor里写JS代码,但是不行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 ...

  2. Java进阶面试题列表

    面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...

  3. MySQL 字符串拼接详解

    在Mysql 数据库中存在两种字符串连接操作.具体操作如下一. 语法:   1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,conca ...

  4. MongoDB 2.4企业版分析

    作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs MongoDB v2.4版于3月19日发布,它引入了内置的文本搜索功能,以及基于哈希的分片和众所期盼的安全 ...

  5. iOS分辨率的那些事儿(转)

    1 iOS设备的分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 Retina ...

  6. C# winform开发嵌套Chrome内核浏览器(WebKit.net)开发(一)

    https://www.cnblogs.com/Maxq/p/6566558.html WebKit.net是对WebKit的.Net封装, 使用它.net程序可以非常方便的集成和使用webkit作为 ...

  7. Git------创建本地库时绿色标志不显示

    转载: http://blog.csdn.net/zixiao217/article/details/77018392 解决方法: 按Win+R键打开运行对话框,输入 regedit.exe ,准备修 ...

  8. Java实现在复制文件时使用进度条

    在对大文件操作时,可能会需要些时间,此时为用户提供进度条提示是非常常见的一项功能,这样用户就可以了解操作文件需要的时间信息.本实例为大家介绍了在复制大的文件时使用的进度条提示,需要注意的是,只有在读取 ...

  9. 8 -- 深入使用Spring -- 1...4 属性占位符配置器

    8.1.4 属性占位符配置器 PropertyPlaceholderConfigurer 是一个容器后处理器,负责读取Properties属性文件里的属性值,并将这些属性值设置成Spring配置文件的 ...

  10. 利用广播实现ip拨号——示例

    1.创建activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi ...