Unittest 多進(jìn)程+裝飾器+額外傳參

一闸英、給Unittest測試類添加參數(shù)
調(diào)用unittest.main()時無法傳入額外的參數(shù)給我們的測試類時游盲,可以使用如下工具給我們的測試類添加額外的參數(shù):

unittest_utils.py代碼:

import unittest

class ParametrizedTestCase(unittest.TestCase):
""" TestCase classes that want to be parametrized should
inherit from this class.
"""

def __init__(self, method_name='runTest', param=None):
    super(ParametrizedTestCase, self).__init__(method_name)
    self.param = param

@staticmethod
def parametrize(test_case_class, param=None):
    """ Create a suite containing all tests taken from the given
        subclass, passing them the parameter 'param'.
    """
    test_loader = unittest.TestLoader()
    test_names = test_loader.getTestCaseNames(test_case_class)
    suite = unittest.TestSuite()
    for name in test_names:
        suite.addTest(test_case_class(name, param=param))
    return suite

使用時:

(1)需要讓測試類繼承自ParametrizedTestCase
(2)添加額外參數(shù)

suite = unittest.TestSuite()
suite.addTest(ParametrizedTestCase.parametrize(TestAndroid, param=data))
runner = unittest.TextTestRunner()
runner.run(suite)

二吨瞎、使用多進(jìn)程執(zhí)行測試
run.py代碼:

import unittest
from multiprocessing import Process
from demo.test_demo import TestAndroid
from utils.unittest_utils import ParametrizedTestCase

class MyProcess(Process):

def __init__(self, data):
    Process.__init__(self)
    self.data = data
    self.suite = None

def run(self):
    ParametrizedTestCase.data = self.data
    self.suite = unittest.TestSuite()
    # 此處param即為給測試類額外傳入的參數(shù)
    self.suite.addTest(ParametrizedTestCase.parametrize(TestAndroid, param=self.data))
    runner = unittest.TextTestRunner()
    runner.run(self.suite)

def create_process_monkey(data):
process_instances = []
for d in data:
instance = MyProcess(d)
process_instances.append(instance)
for instance in process_instances:
instance.start()

if name == "main":

process01 = {
    'calculate': '20+30',
    "value": "50"
}
process02 = {
    'calculate': '3*2',
    "value": "6"
}
create_process_monkey([process01, process02])

三痹兜、使用裝飾器格式化日志輸出
logger.py代碼:

def add_log(func):
def wrapper(*args, *kwargs):
# 獲取用例名稱
case = func.name
print(case + " : start ...")
print("")
# 執(zhí)行測試用例
func(
args)
print(case + " : end ...")
print("")

return wrapper

test_demo.py代碼示例:

import os

from utils.logger import add_log
from utils.unittest_utils import ParametrizedTestCase

class TestAndroid(ParametrizedTestCase):

def setUp(self):
    pass

# 格式化輸出裝飾器
@add_log
def test_calculate(self):
    print("當(dāng)前進(jìn)程的pid是: " + str(os.getpid()))
    self.assertTrue(eval(self.param["calculate"]) == int(self.param["value"]))
    
def tearDown(self):
    pass

原文鏈接:https://blog.csdn.net/qq_27525737/article/details/108561368

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颤诀,隨后出現(xiàn)的幾起案子字旭,更是在濱河造成了極大的恐慌,老刑警劉巖崖叫,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遗淳,死亡現(xiàn)場離奇詭異,居然都是意外死亡心傀,警方通過查閱死者的電腦和手機(jī)屈暗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脂男,“玉大人养叛,你說我怎么就攤上這事≡壮幔” “怎么了弃甥?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汁讼。 經(jīng)常有香客問我淆攻,道長阔墩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任瓶珊,我火速辦了婚禮啸箫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘艰毒。我一直安慰自己筐高,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布丑瞧。 她就那樣靜靜地躺著柑土,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绊汹。 梳的紋絲不亂的頭發(fā)上稽屏,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音西乖,去河邊找鬼狐榔。 笑死,一個胖子當(dāng)著我的面吹牛获雕,可吹牛的內(nèi)容都是我干的薄腻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼届案,長吁一口氣:“原來是場噩夢啊……” “哼庵楷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楣颠,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尽纽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后童漩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弄贿,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年矫膨,在試婚紗的時候發(fā)現(xiàn)自己被綠了差凹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡侧馅,死狀恐怖直奋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情施禾,我是刑警寧澤脚线,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站弥搞,受9級特大地震影響邮绿,放射性物質(zhì)發(fā)生泄漏渠旁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一船逮、第九天 我趴在偏房一處隱蔽的房頂上張望顾腊。 院中可真熱鬧,春花似錦挖胃、人聲如沸杂靶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吗垮。三九已至,卻和暖如春凹髓,著一層夾襖步出監(jiān)牢的瞬間烁登,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工蔚舀, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留饵沧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓赌躺,卻偏偏與公主長得像狼牺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子礼患,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • CD-Python-JY-1809班項目階段教學(xué)內(nèi)容 開篇 - 就業(yè)形勢分析 就業(yè)方向Python后端開發(fā)工程師(...
    ychaochaochao閱讀 941評論 0 1
  • 源碼路徑:python安裝目錄Lib\unittest是钥,主要包含__init__.py,__main__.py讶泰,c...
    0981b16f19c7閱讀 530評論 0 1
  • 由于總結(jié)了太多的東西,所以篇幅有點長拂到,這也是我"縫縫補(bǔ)補(bǔ)"總結(jié)了好久的東西痪署。 Py2 VS Py3 print成為...
    雷課閱讀 269評論 0 0
  • 為什么學(xué)習(xí)Python? 通過什么途徑學(xué)習(xí)的Python兄旬? 上網(wǎng)收集視頻狼犯,資料 關(guān)注公證號 買教程,書籍 Pyth...
    130920閱讀 1,216評論 0 0
  • unittest是python內(nèi)置的一個單元測試框架领铐,在學(xué)習(xí)怎么使用它之前悯森,我們先來了解它的一些概念和原理。 Te...
    summer_1a77閱讀 326評論 0 0