Pytest執(zhí)行unittest TestSuite(測(cè)試套件)的實(shí)現(xiàn)方法
前言
TestSuite一直是unittest的靈活與精髓之處,在繁多的測(cè)試用例中,可以任意挑選和組合各種用例集,比如smoke用例集、
level1用例集、
webtest用例集、
bug回歸用例集
等等,當(dāng)然這些TestSuite需要我們提前定義好,并把用例加載進(jìn)去。Pytest采取的是完全不同的用例組織和運(yùn)行方式。用例的運(yùn)行主要基于名稱匹配;組織則基于用例目錄,用例命名格式及用例mark標(biāo)簽, 這種方式省去了麻煩的提前定義TestSuite及加載用例的過程,執(zhí)行時(shí)通過路徑/用例名格式/不同的標(biāo)簽組合來動(dòng)態(tài)匹配出要執(zhí)行的用例,使用更加靈活。然而,從原有的unittest框架轉(zhuǎn)向pytest懷抱時(shí)仍不得不面臨這樣一個(gè)問題:我原先定義好的TestSuite怎么執(zhí)行?
實(shí)現(xiàn)方法
主要思路:
①迭代遍歷TestSuite中的所有case得到每個(gè)case的路徑test_demo.TestDemo.test_a
②將case路徑轉(zhuǎn)化為Pytest支持的運(yùn)行格式test_demo.py::TestDemo::test_a并組成一個(gè)case名稱列表供Pytest調(diào)用。
示例用例: test_demo.py:
import unittest class TestDemo(unittest.TestCase): def test_a(self): print("a") def test_b(self): print("b")
示例測(cè)試套件:demo.py:
import unittest import pytest from test_demo import TestDemo suite = unittest.TestSuite() suite.addTests([TestDemo('test_a'), TestDemo('test_b')]) # 因?yàn)閟uite中可能會(huì)存在嵌套, 所以我們要迭代取出其中所有的用例: def collect(suite): cases = [] # 用于存放Pytest支持的用例路徑字符串 def _collect(tests): # 遞歸,如果下級(jí)元素還是TestSuite則繼續(xù)往下找 if isinstance(tests, unittest.TestSuite): [_collect(i) for i in tests if tests.countTestCases() != 0] else: _path = tests.id().split(".") # case.id()可以獲取用例路徑(字符串) _path[0] += ".py" cases.append("::".join(_path)) # 如果下級(jí)元素是TestCase,則添加到TestSuite中 _collect(suite) return cases if __name__ == '__main__': cases = collect(suite) pytest.main([*cases, "-v"]) # pytest.main(cases) # 不加額外參數(shù)的化可直接執(zhí)行cases
到此這篇關(guān)于Pytest執(zhí)行unittest TestSuite(測(cè)試套件)的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Pytest unittest TestSuite測(cè)試套件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Pytest使用logging模塊寫日志的實(shí)例詳解
- pytest測(cè)試框架+allure超詳細(xì)教程
- pytest官方文檔解讀之安裝和使用插件的方法
- pytest使用@pytest.mark.parametrize()實(shí)現(xiàn)參數(shù)化的示例代碼
- python單測(cè)框架之pytest常見用法
- 詳解Pytest測(cè)試用例的執(zhí)行方法
- Python pytest裝飾器總結(jié)(實(shí)例詳解)
- 詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹
- pytest-sugar?執(zhí)行過程中顯示進(jìn)度條的腳本分享
相關(guān)文章
使用Python對(duì)Dicom文件進(jìn)行讀取與寫入的實(shí)現(xiàn)
這篇文章主要介紹了使用Python對(duì)Dicom文件進(jìn)行讀取與寫入的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04json 轉(zhuǎn) mot17數(shù)據(jù)格式的實(shí)現(xiàn)代碼 (親測(cè)有效)
這篇文章主要介紹了json 轉(zhuǎn) mot17數(shù)據(jù)格式的實(shí)現(xiàn)代碼 (親測(cè)有效),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03命令行傳遞參數(shù)argparse.ArgumentParser的使用解析
這篇文章主要介紹了命令行傳遞參數(shù)argparse.ArgumentParser的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼
這篇文章主要介紹了Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動(dòng)回復(fù)功能
這篇文章主要介紹了python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動(dòng)回復(fù)功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Django?CSRF驗(yàn)證失敗請(qǐng)求被中斷的問題
這篇文章主要介紹了Django?CSRF驗(yàn)證失敗請(qǐng)求被中斷的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09