我可能在這裏有一個XY problem,所以對於我的實際問題提供更好的解決方案的答案與提示如何做愚蠢的答案一樣受歡迎我想要做的事情。Monkey-patch一個由TON文件導入的模塊(單元測試)
X的問題是,我有一個非常大的測試套件,使用Python's unittest
module。讓我們說數百個個人test_<foo>.py
文件。我知道如何使用unittest.discover()
來發現它們。但是,這將它們全部放在一個大的測試套件中。我需要三個(或四個或五個)子集:例如,frontend
測試套件和backend
測試套件。爲了簡單起見,你可以假設子集是互斥的。
我不想在一個大的「目錄」中手動列出所有的frontend
測試;我想繼續使用discover()
(這樣新添加的前端測試會自動獲取,而「目錄」永遠不會過時)。
所以我的想法是用某種方式使用裝飾器。例如,我現有的測試用例模塊
import unittest
class TestButtons(unittest.TestCase):
def test_simple(self):
self.assertTrue(True)
將成爲
import unittest
import MySuites
@MySuites.FrontEndTest
class TestButtons(unittest.TestCase):
def test_simple(self):
self.assertTrue(True)
,然後,有discover()
ED所有測試用例,我可以通過檢查類屬性那麼大的套房滲入到我的小套房一些適當的方式。
Y問題是,這個解決方案要求我將import MySuites
分成我的數百個測試文件中的每一個。如果可能的話,我想避免這種差異。事實上,理想情況下,我可以寫
import unittest
@unittest.FrontEndTest
class TestButtons(unittest.TestCase):
def test_simple(self):
self.assertTrue(True)
使用某種猴子補丁。不過,我再也不希望import
一些其他模塊在數百個文件中;我只想讓unittest
「做我想做的事」,而不必告訴它數百次。
這可能嗎?本地Python說話者如何解決我的問題?