Pytest執(zhí)行unittest TestSuite(測試套件)的實(shí)現(xiàn)方法
前言
TestSuite一直是unittest的靈活與精髓之處,在繁多的測試用例中,可以任意挑選和組合各種用例集,比如smoke用例集、
level1用例集、
webtest用例集、
bug回歸用例集
等等,當(dāng)然這些TestSuite需要我們提前定義好,并把用例加載進(jìn)去。Pytest采取的是完全不同的用例組織和運(yùn)行方式。用例的運(yùn)行主要基于名稱匹配;組織則基于用例目錄,用例命名格式及用例mark標(biāo)簽, 這種方式省去了麻煩的提前定義TestSuite及加載用例的過程,執(zhí)行時通過路徑/用例名格式/不同的標(biāo)簽組合來動態(tài)匹配出要執(zhí)行的用例,使用更加靈活。然而,從原有的unittest框架轉(zhuǎn)向pytest懷抱時仍不得不面臨這樣一個問題:我原先定義好的TestSuite怎么執(zhí)行?
實(shí)現(xiàn)方法
主要思路:
①迭代遍歷TestSuite中的所有case得到每個case的路徑test_demo.TestDemo.test_a
②將case路徑轉(zhuǎn)化為Pytest支持的運(yùn)行格式test_demo.py::TestDemo::test_a并組成一個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")
示例測試套件: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中可能會存在嵌套, 所以我們要迭代取出其中所有的用例: def collect(suite): cases = [] # 用于存放Pytest支持的用例路徑字符串 def _collect(tests): # 遞歸,如果下級元素還是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)) # 如果下級元素是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(測試套件)的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Pytest unittest TestSuite測試套件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python對Dicom文件進(jìn)行讀取與寫入的實(shí)現(xiàn)
這篇文章主要介紹了使用Python對Dicom文件進(jìn)行讀取與寫入的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04json 轉(zhuǎn) mot17數(shù)據(jù)格式的實(shí)現(xiàn)代碼 (親測有效)
這篇文章主要介紹了json 轉(zhuǎn) mot17數(shù)據(jù)格式的實(shí)現(xiàn)代碼 (親測有效),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03命令行傳遞參數(shù)argparse.ArgumentParser的使用解析
這篇文章主要介紹了命令行傳遞參數(shù)argparse.ArgumentParser的使用解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼
這篇文章主要介紹了Python獲取本機(jī)所有網(wǎng)卡ip,掩碼和廣播地址實(shí)例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動回復(fù)功能
這篇文章主要介紹了python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動回復(fù)功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04