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中展开(*
)或unzip
'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
。