Commit 4986f5e86fcdce8b8eaed9b1b57537f94cd00e4b
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}`.
Showing
2 changed files
with
17 additions
and
14 deletions
... | ... | @@ -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