关闭

python测试框架nose研究

标签: 自动化测试nosetempest
4125人阅读 评论(0) 收藏 举报
分类:

最近在使用openstack自动化测试工具tempest,tempest中用到了nose,这里先了解一下nose的用法吧。

关于nose的安装什么的就不介绍了,这个可以在网上搜一搜。

这里主要介绍nose框架和如何使用。好吧,也是烂大街的东西,这里全当总结汇总下吧。


第一部分:

这一部分应该写写nose的前世今生,祖宗十八代什么的,可惜找了下没看到比较详细的介绍,可能大家都觉着知道是个啥,怎么用就行了吧。好吧,me,too~

python的单元测试有很多,tempest里面就涉及到了nose,unittest,testtools。这三个是啥关系呢?好吧,就是基友关系。

unittest是python单元测试的老祖宗,里面提供了很多单元测试的概念。比如testcase,testsuite,testloader,texttestrunner。

1、testcase 也就是测试用例,一般一个unittest的实例就是一个testcase,可以理解为测试的最小单元。

2、testsuite 测试套,就是多个测试case的集合。多个testcase加载后,然后testsuite编排执行顺序啥的。

3、testloader 测试加载器。啥意思呢,你写的测试用例要首先实例化了以后才能用,但是怎么实例化,实例化哪些这个就是testloader干的活了。它通过各种匹配原则来进行加载,创建测试用例的实例,然后返回。

4、texttestrunner,这个是真正执行测试用例的,执行之前testloader加载的那些实例。执行测试用例实例的run方法(和多线程那个run一个意思),然后用例就咔咔执行了。


然后testtools看他不爽,给它增强了一下。看了tempest里面的那个test.py,它是继承自testtools的,至于它具体干了啥,没仔细研究过。不过用例执行的执行结构啥的还是一样一样的。

好了,可以介绍下nose了。其实吧,看了tempest以后,大部分的还是继承自testtools,感觉nose在里面的作用就是个testloader,加载testcase的。不过使用nose用来加载还是很强大的,可以运行一个类、函数、文件、包什么的。好像是有个匹配规则,还没有看过nose的代码,这里就不瞎哔哔了。


看个栗子:

unittest的灵感来自junit,好吧,我也没用过。但是很明显的一个痕迹就是搞个unittest测试用例,你怎么也得写个类,继承自unittest,然后再写方法。比如下面这种:

import unittest


class A(object):

    def __init__(self):
        pass

    def add(self, a, b):
        return a - b


class SimpleTest(unittest.TestCase):

    def setUp(self):
        self.a = A()

    def test_hehe(self):
        assert self.a.add(10, 9) == 1

if __name__ == '__main__':
    unittest.main()
其实上面这么多,有用的部分就是 assert self.a.add(10, 9) == 1,其他的都是准备工作。

为啥要搞这么麻烦呢?如果我可以直接把多余的省了,直接使用那句话不就行了。好吧,nose满足你,如果使用nose写个用例,最多也就下面这样吧。

def test_hehe():
    a = A()
    assert self.a.add(10, 9) == 1

好了,不必折腾整个类什么的了。当然这个地方就举例说明下,肯定把nose的优点给写出来了。其实nose是支持多种形式的,比如一个测试函数,一个测试类什么的都可以。


第二部分:

这部分主要介绍nose的使用。目前使用的也只是最简单的方法:nosetests xxx,其他的还没有深入研究。

其中xxx可以是目录、包、文件等,nose可以识别这些东东中的测试用例并执行。

如果想单独执行一个类中的测试方法,可以使用nosetests xxxx.py:Testclass.testmethod 其中xxxx.py是文件名,Testclass是类名,testmethod是要执行的方法。


第三部分:

这部分主要介绍tempest中的具体应用。

黑盒测试的主要工作就是模拟各种场景对待测系统进行测试(貌似有个名字叫数据驱动测试)。所以测试框架要做的也是围绕着构造数据来展开的。

一个完整的用例应该包括:前置条件,测试过程执行,后置条件。这些unittest都已经为你考虑过了,这个就是setUp和teardown方法的由来了。

但是看了tempest中的一个test.py(算是所有测试的基类吧)后,对一个类中的setUp和setUpClass的执行不是很清楚。不说了,直接上简化后的代码搞一把试试。

# encoding:utf-8
import testtools


class TestSetUp(testtools.TestCase):

    @classmethod
    def setUp(cls):
        print "setUp running"

    @classmethod
    def setUpClass(cls):
        print "setUpClass running"

    @classmethod
    def tearDown(cls):
        print "teardown running"

    @classmethod
    def tearDownClass(cls):
        print "teardownclass running"

    def test_func1(self):
        print "func1 running"

    def test_func2(self):
        print "func2 running"

    def test_func3(self):
        print "func3 running"

使用nosetests 执行,结果如下,其中-s是会打印具体输出,不加的话就看不到输出了:


从上面的输出可以看出执行步骤:setupClass --> setup -->testfunc-->teardown -->setup -->testfunc-->teardown ...

setUpclass相当于全局的前置条件,teardownclass相当于全局的后置条件,setUp相当于每个用例的前置条件,teardown相当于每个用例的后置条件。

所以tempest中初始化那些请求的client都是在setupclass中的resource_setup中进行的,然后在用例的整个运行周期中都有效。






tempest中的使用

1
1
查看评论

python测试工具--nose简介

声明: 本博客欢迎转发,但请保留原作者信息! 新浪微博:@孔令贤HW; 博客地址:http://blog.csdn.net/lynn_kong 内容系本人学习、研究和总结,如有雷同,实属荣幸! 使用python开发的估计都知道unittest,与Java中的JUnit一样,编写测试用例需要遵守一定...
  • lynn_kong
  • lynn_kong
  • 2013-07-24 09:06
  • 18106

python nose测试框架全面介绍三

三、nose的测试工具集 nose.tools模块提供了一系列的小工具,包括测试执行时间、异常输出及unittest框架中所有的assert功能。 为了使写用例更加容易,nose.tools提供了部分便利的功能函数,下面写几个常用的,如下: nose.tools.ok_(expr, msg=No...
  • zcabcd123
  • zcabcd123
  • 2017-02-07 14:18
  • 377

nose-1.3.4-window--python27

  • 2015-02-01 17:40
  • 271KB
  • 下载

使用nose进行python自动化测试

一、为什么使用nose? 编写测试更容易。 nose可以自动识别继承于unittest.TestCase的测试单元,并执行测试,而且,nose也可以测试非继承于unittest.TestCase的测试单元。nose提供了丰富的API便于编写测试代码。 执行测试更容易。 只要遵循一些简单的规则...
  • zcabcd123
  • zcabcd123
  • 2017-02-07 16:19
  • 1481

python下常见测试框架之三--nose

nose也是python里面用得比较多的一个测试框架。 windows下我是通过easy_install安装的,具体安装办法可以百度。 安装setuptools的时候,先在网上下载ez_setup.py,然后在cmd下,进入到ez_setup.py所在的目录,然后执行python ez_setu...
  • shunelly
  • shunelly
  • 2014-09-02 21:36
  • 2129

接口自动化:Jenkins 自动构建python+nose测试

参考:http://www.cnblogs.com/LanTianYou/p/6559916.html#_label1 http://blog.csdn.net/limm33/article/details/51191263 通过Jenkins自动化构建python nose测试分两步:1. 创建节...
  • chinewwen
  • chinewwen
  • 2017-04-20 15:05
  • 642

初试nose

阅读《Practical Programming -An Introduction to Computer Science Using Python》一书时,在第4章提到了使用Nose对Python代码进行测试,因而小试牛刀了一下。 --------------------------------...
  • yockie
  • yockie
  • 2013-01-15 23:10
  • 5844

Python 各种测试框架简介(三):nose

摘要 这里将从(pythontesting.net)陆续编译四篇 Python 测试框架的简介,分别为:doctest、unittest、nose 和 pytest。本篇为第三篇:nose 本篇将介绍的 nose 不再是 Python 官方发行版的标准包,但它与 unittest 有...
  • qq_15013233
  • qq_15013233
  • 2016-09-13 16:42
  • 1809

python自动化测试框架nose

python除了unittest,还有一款更快捷的nose,nose可以说是对unittest的一种简化吧 但是他不需要unittest那种必须有固有的格式,他只需要文件,类名,方法名等含有test就可以unittest是需要手动来写discover函数来遍历用例的 Name...
  • u014480530
  • u014480530
  • 2016-12-06 23:51
  • 519

Python的学习(十八)---- 单元测试工具nose

转自http://blog.csdn.net/zbyufei/article/details/6574213 一、安装nose   先用easy_install 安装 nose,easy_install是一个很好的python工具,可以方便安装很多的python程序。可以去http://py...
  • linda1000
  • linda1000
  • 2013-01-23 15:10
  • 11822
    个人资料
    • 访问:15192次
    • 积分:262
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:3篇
    • 译文:1篇
    • 评论:0条
    文章分类