【发布时间】:2015-11-15 11:06:44
【问题描述】:
我们有大量的测试用例类来执行一些检查。我需要生成所有相同的测试,但要更改变量的值。 例如:
class DynamicPivotSeriesTestCase(AuthenticatedApiTestCase):
'''
Test all series against a fixed category trying every format
'''
#binding
ftn = utils.format_test_name
# Test Params
base_url, formats = API_FORMATS['pivot']
base_test_name = 'test_pivot_series_{series}'
# Test vars
series = VARS
for srs in series:
params = {'series': srs, 'cats': 'campaign', 'from': '2013-07-31', 'to': '2013-07-31'}
test_name = ftn(base_test_name, params)
locals()[test_name] = utils.make_check_code(200, base_url, params, formats)
class DynamicPivotDerivedSeriesTestCase(AuthenticatedApiTestCase):
#binding
ftn = utils.format_test_name
# Test Params
base_url, formats = API_FORMATS['pivot']
base_test_name = 'test_pivot_derived_series_{series}'
# Test vars
series = DERIVED_VARS
for srs in series:
params = {'series': srs, 'cats': 'campaign', 'from': '2013-07-31', 'to': '2013-07-31'}
test_name = ftn(base_test_name, params)
locals()[test_name] = utils.make_check_code(200, base_url, params, formats)
大约有 150 个这样的测试,我无法复制粘贴代码。我需要遍历全局变量,访问每个(class_name,类对象),检查该类是否是测试类,如果是,我需要实例化一个与当前访问的类测试具有相同主体的新测试类,但我需要为 base_url 变量设置一个不同的值。这是我不明白如何实现的。
【问题讨论】:
-
你试过迭代
globals()吗?它不起作用吗?你知道如何实例化一个类吗? -
我不明白如何实例化所需的类来解决问题。
-
你不懂如何实例化一个类?或在这种情况下如何处理。遍历
globals()怎么样? -
我无法复制粘贴代码。我遍历全局变量,访问每个(class_name,类对象),检查该类是否是测试类,如果是,我需要实例化一个与当前访问的类测试具有相同主体的新测试类,但我需要为 base_url 变量设置不同的值。这是我不明白如何实现的。
-
如果您在问题中省略了类似的基本信息,您将不会得到明确的答案
标签: python class metaprogramming scopes