python的unittest模組提供了乙個測試框架,只要我們寫乙個繼承unittest.testcase的類,類中用setup做初始化,用teardown做清理。
主要用到的函式有:
failedinfo表示不成立列印資訊failedinfo,為可選引數
self.fail([msg])會無條件的導致測試失敗,不推薦使用。
self.assertequal(value1, value2, failedinfo) # 斷言value1 == value2
self.asserttrue(表示式, failedinfo) # 斷言value為真
self.assertfalse(表示式, failedinfo) # 斷言value為假
# 斷言肯定發生異常,如果沒發生異常,則為測試失敗。
# 引數1為異常,引數二為丟擲異常的呼叫物件,剩餘引數為傳遞給可呼叫物件的引數。
self.assertraises(valueerror, self.widget.resize, -1, -1)
呼叫時機的加self,如self.assertequal(self.seq, range(10)),self.asserttrue(value > 100)
更詳細的教程見:
python**
#coding=utf-8
import random
import unittest
class testsequencefunctions(unittest.testcase):
def setup(self):
self.seq = range(10)
def test_shuffle(self):
# make sure the shuffled sequence does not lose any elements
random.shuffle(self.seq)
self.seq.sort()
self.assertequal(self.seq, range(10))
# should raise an exception for an immutable sequence
self.assertraises(typeerror, random.shuffle, (1,2,3))
def test_choice(self):
element = random.choice(self.seq)
self.asserttrue(element in
self.seq)
def test_sample(self):
with self.assertraises(valueerror):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.asserttrue(element in
self.seq)
results_fields = [
("username", unicode),
("showid", unicode),
("total_pv", int),
("pubdate", unicode),
("tags", list),
("showname", unicode),
("pg", int),
("ext", str),
] results_fields_map = dict(results_fields)
class testdictvalueformatfunctions(unittest.testcase):
def setup(self):
self.results = [
] def test_format(self):
self.asserttrue(isinstance(self.results, list), "self.results's type must be dict but got ".format(type(self.results)))
for r in
self.results:
for f in results_fields_map:
value = r.get(f, none)
self.asserttrue(isinstance(value, results_fields_map[f]), u"'s type must be but got ".format(value, results_fields_map[f], type(value)))
#self.asserttrue(isinstance(value, results_fields_map[f]))
def test_value(self):
for r in
self.results:
self.assertequal(r["pg"], 1)
self.assertequal(r["ext"], u"mp4")
if __name__ == '__main__':
# unittest.main() # 用這個是最簡單的,下面的用法可以同時測試多個類
# unittest.texttestrunner(verbosity=2).run(suite1) # 這個等價於上述但可設定verbosity=2,省去了執行時加-v
suite1 = unittest.testloader().loadtestsfromtestcase(testsequencefunctions)
suite2 = unittest.testloader().loadtestsfromtestcase(testdictvalueformatfunctions)
suite = unittest.testsuite([suite1, suite2])
unittest.texttestrunner(verbosity=2).run(suite)
Python中 r 的實際應用
r表示將游標的位置回退到本行的開頭位置。b表示將游標的位置回退一位。在python語言中,使用print列印輸出時,預設是會進行換行的。如何讓其不換行呢?author gao zhengjie date 2018 1 5 desc 在一行中不斷重新整理倒計時 import time count do...
Python 多執行緒實際應用
import threading from basesite.backend.strategy.websocket break double position strategy import breakstrategy from basesite.utils.okexutils.okexwebsoc...
VC斷言的應用
一 關於斷言 所謂的斷言就是可以肯定為正確的乙個陳述語句。假設某個函式需要乙個指向文件物件的指標作為引數,但卻錯誤地使用了乙個檢視指標來呼叫該函式。如果函式繼續使用該錯誤位址,輕則程式執行得不到正確的結果,重則破壞檢視資料。由於這種錯誤往往要到使用檢視資料時才會發現,因而要找出導致錯誤的根本原因就要...