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。

測試項目

 

腳本示例

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)

測試執行

 

測試結果

 

 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM