自动化框架结构:存储端点的位置

时间:2017-02-28 00:50:02

标签: python unit-testing automated-tests

我正在为后端开发一个测试自动化框架(使用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'

提前致谢

1 个答案:

答案 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采用两种方法,第一种方法将在您想要获取属性值时使用,而第二种方法在将值分配给属性时使用。
  • 并且您强制子类使用特定URL定义url属性。

有关详细信息,请转到文档https://docs.python.org/2/library/abc.html#abc.abstractproperty