2017-02-28 9 views
0

私はバックエンドにテストオートメーションフレームワーク(Pythonの単体テストを使用)を開発しています。 さまざまなコンポーネントとDBが付属していますが、私の質問はフレームワークで使用するエンドポイント(API)を格納するのベストプラクティスです。 (ディレクトリ構造) 各コンポーネントのクラス変数として保存する必要がありますか?またはすべてのAPIを含む別のクラスを作成しますか?オートメーションフレームワーク構造:エンドポイントを格納する場所

私たちはcomp1とcomp2を持っていると仮定します したがって、両方のコンポーネントのすべてのAPIを含む新しいクラス(Endpointsなど)を定義する必要がありますか、コンポーネントに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

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は、プロパティ値を取得したいときの値であるときに、第2の1が使用されている間、最初のものはつもり、使用され、二つの方法を取りますプロパティに割り当てられます。
  • あなたは、特定のURLを持つurl属性を定義するようにサブクラスを強制しています。

詳細情報については、私はあなたが質問をより具体的にするCOMP1、COMP2とAPIの部分的なコードを提供示唆ドキュメント

関連する問題