Commit 4986f5e86fcdce8b8eaed9b1b57537f94cd00e4b

Authored by selurvedu
1 parent 6b5a14d9

Update keywords for loading data from files

In essence:

* Rename `load_initial_data_from` to `load_data_from`
  and add a new optional argument `mode`;

* Add early recursive merging of brokers' data and
  default values into `load_data_from`;

* Thanks to early merging we no longer need to
  touch `Default` in resource files, so the old code
  which used to do that was removed. Even more,
  `Default` is no longer accessible through `${BROKERS}`.
... ... @@ -58,7 +58,7 @@ Set Suite Variable With Default Value
58 58
59 59 # Load brokers data
60 60 ${file_path}= Get Variable Value ${BROKERS_FILE} brokers.yaml
61   - ${BROKERS}= load_initial_data_from ${file_path}
  61 + ${BROKERS}= load_data_from ${file_path} mode=brokers
62 62 Log ${BROKERS}
63 63 Set Suite Variable ${BROKERS}
64 64 # List of currently used brokers
... ... @@ -66,7 +66,7 @@ Set Suite Variable With Default Value
66 66
67 67 # Load users data
68 68 ${file_path}= Get Variable Value ${USERS_FILE} users.yaml
69   - ${USERS}= load_initial_data_from ${file_path}
  69 + ${USERS}= load_data_from ${file_path}
70 70 Log ${USERS.users}
71 71 Set Suite Variable ${USERS}
72 72 # List of currently used users
... ... @@ -132,11 +132,8 @@ Get Broker Property
132 132 ... if that property exists, otherwise, it returns a
133 133 ... default value.
134 134 Run Keyword If '${broker_name}'=='${None}' Fail \${broker_name} is NoneType
135   - ${status}= Run Keyword And Return Status Should Contain ${BROKERS['${broker_name}']} ${property}
136   - Return From Keyword If ${status} ${BROKERS['${broker_name}'].${property}}
137   - # If broker doesn't have that property, fall back to default value
138   - Should Contain ${BROKERS['Default']} ${property}
139   - [return] ${BROKERS['Default'].${property}}
  135 + Should Contain ${BROKERS['${broker_name}']} ${property}
  136 + Return From Keyword ${BROKERS['${broker_name}'].${property}}
140 137
141 138
142 139 Get Broker Property By Username
... ... @@ -166,7 +163,7 @@ Get Broker Property By Username
166 163
167 164 Завантажити дані про тендер
168 165 ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact.yaml
169   - ${ARTIFACT}= load_initial_data_from ${file_path}
  166 + ${ARTIFACT}= load_data_from ${file_path}
170 167 Run Keyword If '${USERS.users['${tender_owner}'].broker}' == 'Quinta'
171 168 ... Set To Dictionary ${USERS.users['${tender_owner}']} access_token=${ARTIFACT.access_token}
172 169 ${TENDER}= Create Dictionary
... ... @@ -177,9 +174,7 @@ Get Broker Property By Username
177 174
178 175
179 176 Підготовка даних для створення тендера
180   - ${custom_intervals}= Get Broker Property By Username ${tender_owner} intervals
181   - ${default_intervals}= Get Broker Property Default intervals
182   - ${period_intervals}= merge_dicts ${default_intervals} ${custom_intervals}
  177 + ${period_intervals}= Get Broker Property By Username ${tender_owner} intervals
183 178 ${tender_data}= prepare_test_tender_data ${period_intervals} ${mode}
184 179 ${TENDER}= Create Dictionary
185 180 Set Global Variable ${TENDER}
... ...
... ... @@ -142,14 +142,22 @@ def munch_to_object(data, format="yaml"):
142 142 return data.toYAML(allow_unicode=True, default_flow_style=False)
143 143
144 144
145   -def load_initial_data_from(file_name):
  145 +def load_data_from(file_name, mode=None):
146 146 if not os.path.exists(file_name):
147 147 file_name = os.path.join(os.path.dirname(__file__), 'data', file_name)
148 148 with open(file_name) as file_obj:
149 149 if file_name.endswith(".json"):
150   - return Munch.fromDict(load(file_obj))
  150 + file_data = Munch.fromDict(load(file_obj))
151 151 elif file_name.endswith(".yaml"):
152   - return fromYAML(file_obj)
  152 + file_data = fromYAML(file_obj)
  153 + if mode == "brokers":
  154 + default = file_data.pop('Default')
  155 + brokers = {}
  156 + for k, v in file_data.iteritems():
  157 + brokers[k] = merge_dicts(default, v)
  158 + return brokers
  159 + else:
  160 + return file_data
153 161
154 162
155 163 def prepare_test_tender_data(procedure_intervals, mode):
... ...
Please register or login to post a comment