微信号:grzlwx

介绍:光荣之路官方资讯

使用nose 进行Python项目的自动化测试(下)

2016-01-26 23:07 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

相关阅读:使用nose 进行Python项目的自动化测试(上)

四、编写测试用例

4.1 项目组织结构

    由于nose是自动收集测试用例的,只有nose执行的测试目录下的源代码文件、包名、子目录名跟正则表达式匹配成功后,才能被收集。而且代码是树级层次显示的话,nose会逐级向下查找子目录下的匹配的测试用例。

    匹配的正则表达式默认值为:((?:^|[\\b_\\.-])[Tt]est.所以最好是以Test开头,或者test开头。当然也可以修改默认的匹配的正则表达式。

  所以,推荐的项目结构为:

   为项目单独建一个test包,里面按项目模块分子包,最后以及为 “test_”开头的测试用例源文件。

4.2  测试结果

4.3测试代码

  test_mymath.py中的代码如下:

# -*- coding: utf-8 -*-
__author__ = 'Administrator'
from nose.tools import assert_equal
from nose.tools import with_setup

import  unittest
import mymath.math as mmath

def setUp():
    print("========test math module setup==========")

def teardown():
    print("========test math module teardown==========")

def test_math_add():
    result=mmath.add(4, 5)
    print("============test_math_add========")
    assert_equal(10, result)

class test_math3():
    def setUp(self):
        print("========test math class setup==========")
    def teardown(self):
        print("========test math class teardown==========")

    def test_math_square(self):
        print("=========== test_math_square============ ")
        assert_equal(9, mmath.square(3))

    def test_math_sub(self):
        print("=========== test_math_sub============ ")
        assert_equal(1, mmath.sub(3, 2))

class test_math2(unittest.TestCase):

    def test_math_multipy(self):
        print("=========== test_math_multipy============ ")
        assert_equal(8, mmath.multiply(2, 4))

test_logicOper.py 中的代码如下:

# -*- coding: utf-8 -*-
__author__ = 'Administrator'

from nose.tools import assert_equal

from  logicOperator.localOperator import  *
def test_logicOper_isGreaterThan():
    print("==========test_logicOper_isGreaterThan==========")
    result=isGreaterThan(4,3)
    assert_equal(True,result)

4.4 测试分析

(1)测试用例的收集

     由于nose是按照正则表达式自动收集匹配的测试用例。我们这里收集了5个测试用例。分别了

  • test_mymath.py模块里的test_math_add函数。

  • test_mymath.py模块里的test_math3类下面的test_math_square、test_math_sub两个函数。

  • test_mymath.py模块里的test_math2类下面的test_math_multipy函数。

  • test_logicOper.py模块里的test_logicOper_isGreaterThan函数。

(2)测试的运行顺序

    从下图打印输出的结果可以看出。收集的测试用例的执行顺序test_logicOper_isGreaterThan— >test_mymath(模块).setup—>test_math2(类).test_math_multipy— >test_math3(类).setup—>test_math3(类).test_math_square—>

test_math3(类).teardown—>test_math3(类).setup— >test_math3(类).test_math_sub—>test_math3(类).teardown— >test_mymath(模块).test_math_add—>test_mymath(模块).teardown.

大体可以得出如下结论:

1)测试的顺序总体上按照包—>模块—>类的顺序进行;

2)然后按照测试用例名称的升序排序进行,比如test_math_multipy比test_math_square先执行;

3)当测试模块中既包含测试函数,又包含测试类时,都一定是先执行setup(如果定义了),模块测试执行完毕后执行teardown(如果定义了)。而且模块的setup、setdown只执行一次。

4)测试类中的每个测试方法执行前先执行setup(如果定义了),执行完毕后执行teardown(如果定义了)。而且每个测试方法的执行过程都是如此,新的方法重新按setup—>执行方法—>teardown的顺序执行。

(3)关于setup 、teardown

       package、module、class都可以设置setup、teardown。

      1)package的setup 、teardown的设置

         放在__init__.py文件中,在整个测试的运行期间只运行一次。

        setup函数的取名可以是setup,setup_package,setUp,setUpPackage中的一个。  

       teardown 函数取名可以是teardown,teardown_package,tearDownortearDownPackage中的一个。

   2) module的setup 、teardown的设置

       在整个测试的运行期间只运行一次。

       setup函数的取名可以是setup,setup_module,setUporsetUpModule中的一个。  

       teardown 函数取名可以是teardown_module, ortearDownModule中的一个。

   3)class的setup 、teardown的设置

     每个测试方法执行时都会调用。

     setup函数的取名可以是setup_class,setupClass,setUpClass,setupAll,setUpAll中的一个。  

     teardown 函数取名可以是teardown_class,teardownClass,tearDownClass,teardownAll,tearDownAll中的一个。

    测试类可以继承unittest.TestCase ,也可以不继承,nose都能识别。

    4)测试方法的setup、teardown

         可以通过with_setup装饰器进行设置,比如

总之,nose的口号是:nose extends unittest to make testing easier(测试更简单).

<完>

(作者:廖飞 来源:http://www.cnblogs.com/liaofeifight/p/5148717.html)

公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com

光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 最热门5类开源技术人才,软件工程师高居榜首 常见面试之机器学习算法思想简单梳理 Python Excel操作 中了几枪?程序员碰见Bug时的30个反应 白帽子黑客:EX,还记得我们一起去太平山顶的约定么?