python斷言的實際應用

2021-06-24 11:55:44 字數 3024 閱讀 9994

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斷言的應用

一 關於斷言 所謂的斷言就是可以肯定為正確的乙個陳述語句。假設某個函式需要乙個指向文件物件的指標作為引數,但卻錯誤地使用了乙個檢視指標來呼叫該函式。如果函式繼續使用該錯誤位址,輕則程式執行得不到正確的結果,重則破壞檢視資料。由於這種錯誤往往要到使用檢視資料時才會發現,因而要找出導致錯誤的根本原因就要...