我正在为后端开发一个测试自动化框架(使用python'单元测试)。 有不同的组件和数据库附加到它们,但我的问题是最佳实践来存储我将在框架中使用的端点(API)? (目录结构) 我应该将它们存储为每个组件的类变量吗?或者创建一个包含所有API的单独类?
假设我们有comp1和comp2 那么我应该定义一个新类(如Endpoints),它包含两个组件的所有API,或者只是将API添加到组件中?
comp1.py:
Class Comp1:
COMP1_ENDPOINT = '/url' #here?
def __init__(self):
...
comp2.py:
Class Comp2:
COMP2_ENDPOINT = '/url' #here?
def __init__(self):
...
或定义一个新类,如:
endpoints.py:
Class EndPoitns():
COMP1_ENDPOIN: '/url'
COMP2_ENDPOINT: '/url'
提前致谢
答案 0 :(得分:0)
我建议使用buildin abc
模块,并使用url abstractproperty创建一个抽象类,然后从该类继承以构建Comp1和Comp2类。
import abc
class AbstractEndpoint(object):
__metaclass__ = abc.ABCMeta
def get_url(self):
return url
def set_url(self, value):
url = value
url = abc.abstractproperty(get_url, set_url)
class Comp2(AbstractEndpoint):
url = '/url/comp2' # Internally the language will call set_url method
class Comp1(AbstractEndpoint):
url = '/url/comp1'
print Comp1().url # Internally the language will call get_url method
print Comp2().url
使用这种方法:
abc.abstractproperty
采用两种方法,第一种方法将在您想要获取属性值时使用,而第二种方法在将值分配给属性时使用。有关详细信息,请转到文档https://docs.python.org/2/library/abc.html#abc.abstractproperty