本文介紹了Python nose單元測試框架的安裝與使用 漓概,分享給大家副砍,具體如下:
安裝(Python2下安裝)
pip install nose
原理與命名規(guī)則
Nose會自動查找源文件疯攒、目錄或者包中的測試用例副瀑,符合正則表達(dá)式(?:^|[\b_\.%s-])[Tt]est晰搀,以及TestCase的子類都會被識別并執(zhí)行蕉拢。
例如:我們可以將python腳本文件名以“_test”結(jié)尾或包含“_test_”蛀蜜,方法名以“_test”結(jié)尾刻两。
使用方法
查看所有nose相關(guān)命令:
nosetests -h
執(zhí)行并捕獲輸出:
nosetests -s
查看nose的運行信息和調(diào)試信息:
nosetests -v9
輸出xml結(jié)果報告:
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
? '''
? ? 測試方法傳入兩個參數(shù)
? ? 參數(shù)一:channels_txt_name
? ? 參數(shù)二:check_list_txt_name
? ? 使用方法:通過“self.參數(shù)名”進(jìn)行調(diào)用
? '''
? @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)執(zhí)行示例:
nosetests --with-html-output --html-out-file=result1.html -v --with-setup-ittr
以上執(zhí)行將輸出html結(jié)果報告,但是需要先安裝插件:
1)安裝:
需要下載插件滴某,在解壓縮后在命令行中cd到該目錄下:
python setup.py install
通過命令行安裝:
pip install nosehtmloutput-2
pip install nose-html-reporting
2)在待測路徑打開cmd使用命令如下磅摹,就可以執(zhí)行測試并生成測試結(jié)果html文件了:
nosetests --with-html-output --html-out-file=result1.html
1)測試腳本中引入:from nose.tools import nottest,istest;
2)不測試的方法:方法名上加修飾器@nottest霎奢;
3)指定為測試方法:方法名上加修飾器@istest(方法名無需符合命名規(guī)則)户誓;
4)查看要執(zhí)行的用例列表: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)
測試執(zhí)行