【发布时间】:2014-03-27 20:04:45
【问题描述】:
我正在编写一个测试脚本,其中包含针对不同测试的不同功能。我希望能够随机选择一个测试来运行。我已经通过以下功能实现了这一点...
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()
【问题讨论】:
-
如果每个可能的测试函数都采用不同类型的参数,并且需要打印不同的日志消息,那么这并不是一个很好的方法。
-
“我希望能够随机选择一个测试来运行”——为什么?为什么不直接运行所有测试?
-
@mgilson 有几个原因。首先,有数千种不同的测试要运行。每次运行脚本时,它都不会涵盖所有选项,因此应运行随机分类。其次,任何测试顺序都可能发生的事实本身就是一个测试。有时订单会导致失败。我计划也可以选择只运行整个批次。
标签: python function variables random