我正在編寫一個測試腳本,其中包含針對不同測試的不同功能。我希望能夠隨機選擇要運行的測試。我已經用下面的函數實現了這個...隨機選擇函數
test_options = ("AOI", "RMODE")
def random_test(test_options, control_obj):
ran_test_opt = choice(test_options)
if ran_test_opt.upper() == "AOI":
logging.debug("Random AOI Test selected")
random_aoi()
elif ran_test_opt.upper() == "RMODE":
logging.debug("Random Read Mode Test selected")
random_read_mode(control_obj)
不過,我想進一步補充測試功能,而無需修改隨機測試選擇功能。我想要做的就是將測試函數添加到腳本中。此外,我還想選擇哪種測試將包含在隨機選擇中。這是變量test_options的作用。我將如何去改變我的隨機生成函數來實現這一目標?
編輯:我回避的事實,所有的測試可能受到包括他們所有的測試類需要不同的參數了。所有參數將被傳遞到init中,並且測試函數將使用「self」引用它們。當他們需要一個特定的變量...
class Test(object):
"""A class that contains and keeps track of the tests and the different modes"""
def __init__(self, parser, control_obj):
self.parser = parser
self.control_obj = control_obj
def random_test(self):
test_options = []
for name in self.parser.options('Test_Selection'):
if self.parser.getboolean('Test_Selection', name):
test_options.append(name.lower())
ran_test_opt = choice(test_options)
ran_test_func = getattr(self, ran_test_opt)
ran_test_func()
#### TESTS ####
def random_aoi(self):
logging.info("Random AOI Test")
self.control_obj.random_readout_size()
def random_read_mode(self):
logging.info("Random Readout Mode Test")
self.control_obj.random_read_mode()
如果每個可能的測試函數都採用不同類型的參數,並且需要打印不同的日誌記錄消息,那麼執行此操作並不是一個好方法。 – geoffspear
「我希望能夠隨機選擇一個測試運行」 - 爲什麼?爲什麼不直接運行所有的測試? – mgilson
@mgilson有幾個原因。首先有幾千個不同的測試運行。每次腳本運行時都不會涵蓋所有選項,因此應該運行隨機分類。其次,任何測試順序都可能發生的事實本身就是一個考驗。有時訂單可能導致失敗。我打算有一個選擇,以貫穿全部。 – Marmstrong