Python 将子类中定义的变量用于基类中的方法
我有一个基类和两个不同的子类(它们在3个不同的模块中)。Python 将子类中定义的变量用于基类中的方法,python,pytest,Python,Pytest,我有一个基类和两个不同的子类(它们在3个不同的模块中)。 在基类中,我有用于子类的测试方法。 我希望基类中的测试方法使用子类中定义的变量。但是当我在子类中运行测试方法时,我无法访问子类中的变量。 有人能帮我解决这个问题吗 注意:我不能使用\uuuuu init\uuuu构造函数(不能收集测试类) 与uuu init_uuuuuuu构造函数有关的错误:未找到任何测试 ==================================================================
在基类中,我有用于子类的测试方法。
我希望基类中的测试方法使用子类中定义的变量。但是当我在子类中运行测试方法时,我无法访问子类中的变量。
有人能帮我解决这个问题吗 注意:我不能使用
\uuuuu init\uuuu
构造函数(不能收集测试类)
与uuu init_uuuuuuu构造函数有关的错误:未找到任何测试
==========================================================================================================src/test\u icd\u operation.py::TestICDFields无法收集测试类
“TestICDFields”,因为它有一个_uinit__;构造函数
--文件:http://doc.pytest.org/en/latest/warnings.html
==============================================16.80秒内出现1次警告=========================
进程已完成,退出代码为0
代码:
class BaseClassExample:
table_name = None
def test_field_for_both_devices(self):
firstname = get_field(table_name)
class SubClass1(BaseClassExample):
table_name = 'Pacer'
def test_field1():
field1 = get_field(table_name)
class SubClass2(BaseClassExample):
table_name = 'ICD'
def test_field2(self):
field2 = get_field(table_name)
因此,当我在类
子类1
中运行测试时,我希望BaseClassExample
上的变量table\u name
从子类子类1
中的变量中获取值Pacer
使用self.table\u name
:
class BaseClass示例:
表名称=无
两个设备(自身)的def测试字段:
firstname=get\u字段(self.table\u名称)
类子类1(BaseClassExample):
表_name='Pacer'
def测试_字段1():
field1=获取字段(self.table\u名称)
类子类2(BaseClassExample):
表_name='ICD'
def测试现场2(自身):
field2=获取字段(self.table\u名称)
说明:Python有几个方面:全局、局部、类和实例。您无法访问
表\u name
,因为Python在本地和全局名称空间中查找它,但失败了。您可以访问self.table\u name
,因为它是实例名称空间,如果名称在实例(在self
中)中没有阴影,它也可以访问类名称空间。您可以添加一些代码吗?可以显示错误消息吗?基类不能使用子类中定义的内容。也许你想在基类中定义东西,然后在子类中重写它?无论如何,显示所有代码肯定会有助于解决这个问题。我添加了一个示例@gwendalgreelier你能显示这个示例吗请@alfe