我有一个基类和两个不同的子类(它们在3个不同的模块中) 在基类中,我有用于子类的测试方法 我希望基类中的测试方法使用子类中定义的变量。但是当我在子类中运行测试方法时,我无法访问子类中的变量 有人可以帮我解决这个问题吗?
P.S。:我不能使用__init__
构造函数(不能收集测试类)!
Error with __init__ contructor: No tests found
============================== warnings summary =============================== src/test_icd_operation.py::TestICDFields cannot collect test class
'TestICDFields' because it has a __init__ constructor
-- Docs: http://doc.pytest.org/en/latest/warnings.html
========================= 1 warnings in 16.80 seconds =========================
Process finished with exit code 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)
因此,当我在类SubClass1
中运行测试时,我希望table_name
上的变量BaseClassExample
从子类{中的变量中获取值Pacer
{1}}。
答案 0 :(得分:0)
使用self.table_name
:
class BaseClassExample:
table_name = None
def test_field_for_both_devices(self):
firstname = get_field(self.table_name)
class SubClass1(BaseClassExample):
table_name = 'Pacer'
def test_field1():
field1 = get_field(self.table_name)
class SubClass2(BaseClassExample):
table_name = 'ICD'
def test_field2(self):
field2 = get_field(self.table_name)
说明:Python有一些namespaces - 全局,本地,类和实例。您无法访问table_name
,因为Python在本地和全局命名空间中查找并失败。您可以访问self.table_name
,因为它的实例名称空间也可以访问类名称空间(如果名称未在实例中隐藏(在self
中)。