Python 在parametrized.expand中使用安装程序定义的变量

Python 在parametrized.expand中使用安装程序定义的变量,python,unit-testing,Python,Unit Testing,假设我有以下单元测试类: class Test(unittest.TestCase) def setUp(self) -> None: self.test_parameter1 = 'A' self.test_parameter2 = 'B' @parametrized.expand([('A',), ('B',)]) def test_function1(self, test_param): * Do te

假设我有以下单元测试类:

class Test(unittest.TestCase)
    def setUp(self) -> None:
        self.test_parameter1 = 'A'
        self.test_parameter2 = 'B'
    
    @parametrized.expand([('A',), ('B',)])
    def test_function1(self, test_param):
        * Do tests here *

有没有办法在参数化的
中使用
self.test\u参数1
self.test\u参数2
。展开
而不是文本
a
B
?想象一下
A
B
都是大字典,在这种情况下,如果给
参数化的\u expand
Yes-
test\u函数
test
类上的一种方法,那么在
test\u函数
中只需使用
self.test\u参数1
self.test\u参数2
,就可以使用&B

例如:

    @parametrized_expand([('A',), ('B',)])
    def test_function1(self, test_param):
       self.assertEqual(test.parameter1 + self.test_paramter2, 10)

也许您可以将它们设置为测试类之外的引用(它们将在unittest导入时执行),并在decorator args中展开(
*
)或un
zip
'em

test_参数1=dict_A
测试参数2=dict
expanded_args=list(zip(test_参数1.items(),test_参数2.items())
类测试(unittest.TestCase)
@参数化。展开(展开参数)
def测试功能1(自身、测试参数):
*在这里做测试*

我的意思是使用
self.test\u参数1
self.test\u参数2
而不是
参数化中的'A'和'B'。展开
decorator@DylanGalea-否-因为在执行装饰器时,这些属性不存在。最好是传递参数的名称,然后使用
getattr
获取属性。但是,如果您将它们存储为属性,那么为什么还需要将它们作为参数化呢?欢迎使用stackoverlow!Afaik这是不可能的=>在启动TestClass之前扩展测试。。。也许如果你的自测参数1是可调用的。。。但这是一个值得尝试的问题,我会关注你的问题,这可能是一个不错的选择。但我一直在寻找一种方法,让安装程序重新声明参数,以防其他测试与类外声明的变量发生冲突。也许您可以在传递到
.expand()之前调用它们上的
.copy()
?我发现的另一个选项是传递变量名为
参数化。展开
,然后使用
eval