How to use _add_select_value method in autotest

Best Python code snippet using autotest_python Github


Full Screen

...288 suffix=suffix,289 exclude=exclude)290 def _add_custom_select(self, query_set, select_name, select_sql):291 return query_set.extra(select={select_name: select_sql})292 def _add_select_value(self, query_set, alias):293 return self._add_custom_select(query_set, alias,294 _quote_name(alias) + '.value')295 def _add_select_ifnull(self, query_set, alias, non_null_value):296 select_sql = "IF( IS NOT NULL, '%s', NULL)" % (_quote_name(alias),297 non_null_value)298 return self._add_custom_select(query_set, alias, select_sql)299 def _join_test_label_column(self, query_set, label_name, label_id):300 alias = 'test_label_' + label_name301 label_query = TestLabel.objects.filter(name=label_name)302 query_set = Test.objects.join_custom_field(query_set, label_query,303 alias)304 query_set = self._add_select_ifnull(query_set, alias, label_name)305 return query_set306 def _join_test_label_columns(self, query_set, label_names):307 label_id_map = self._get_label_ids_from_names(label_names)308 for label_name in label_names:309 query_set = self._join_test_label_column(query_set, label_name,310 label_id_map[label_name])311 return query_set312 def _join_test_attribute(self, query_set, attribute, alias=None,313 extra_join_condition=None):314 """315 Join the given TestView QuerySet to TestAttribute. The resulting query316 has an additional column for the given attribute named317 "attribute_<attribute name>".318 """319 if not alias:320 alias = 'test_attribute_' + attribute321 attribute_query = TestAttribute.objects.filter(attribute=attribute)322 if extra_join_condition:323 attribute_query = attribute_query.extra(324 where=[extra_join_condition])325 query_set = Test.objects.join_custom_field(query_set, attribute_query,326 alias)327 query_set = self._add_select_value(query_set, alias)328 return query_set329 def _join_machine_label_columns(self, query_set, machine_label_names):330 for label_name in machine_label_names:331 alias = 'machine_label_' + label_name332 condition = "FIND_IN_SET('%s', %s)" % (333 label_name, _quote_name(alias) + '.value')334 query_set = self._join_test_attribute(335 query_set, 'host-labels',336 alias=alias, extra_join_condition=condition)337 query_set = self._add_select_ifnull(query_set, alias, label_name)338 return query_set339 def _join_one_iteration_key(self, query_set, result_key, first_alias=None):340 alias = 'iteration_result_' + result_key341 iteration_query = IterationResult.objects.filter(attribute=result_key)342 if first_alias:343 # after the first join, we need to match up iteration indices,344 # otherwise each join will expand the query by the number of345 # iterations and we'll have extraneous rows346 iteration_query = iteration_query.extra(347 where=['%s.iteration = %s.iteration'348 % (_quote_name(alias), _quote_name(first_alias))])349 query_set = Test.objects.join_custom_field(query_set, iteration_query,350 alias, left_join=False)351 # select the iteration value and index for this join352 query_set = self._add_select_value(query_set, alias)353 if not first_alias:354 # for first join, add iteration index select too355 query_set = self._add_custom_select(356 query_set, 'iteration_index',357 _quote_name(alias) + '.iteration')358 return query_set, alias359 def _join_iteration_results(self, test_view_query_set, result_keys):360 """Join the given TestView QuerySet to IterationResult for one result.361 The resulting query looks like a TestView query but has one row per362 iteration. Each row includes all the attributes of TestView, an363 attribute for each key in result_keys and an iteration_index attribute.364 We accomplish this by joining the TestView query to IterationResult365 once per result key. Each join is restricted on the result key (and on366 the test index, like all one-to-many joins). For the first join, this367 is the only restriction, so each TestView row expands to a row per368 iteration (per iteration that includes the key, of course). For each369 subsequent join, we also restrict the iteration index to match that of370 the initial join. This makes each subsequent join produce exactly one371 result row for each input row. (This assumes each iteration contains372 the same set of keys. Results are undefined if that's not true.)373 """374 if not result_keys:375 return test_view_query_set376 query_set, first_alias = self._join_one_iteration_key(377 test_view_query_set, result_keys[0])378 for result_key in result_keys[1:]:379 query_set, _ = self._join_one_iteration_key(query_set, result_key,380 first_alias=first_alias)381 return query_set382 def _join_job_keyvals(self, query_set, job_keyvals):383 for job_keyval in job_keyvals:384 alias = 'job_keyval_' + job_keyval385 keyval_query = JobKeyval.objects.filter(key=job_keyval)386 query_set = Job.objects.join_custom_field(query_set, keyval_query,387 alias)388 query_set = self._add_select_value(query_set, alias)389 return query_set390 def _join_iteration_attributes(self, query_set, iteration_attributes):391 for attribute in iteration_attributes:392 alias = 'iteration_attribute_' + attribute393 attribute_query = IterationAttribute.objects.filter(394 attribute=attribute)395 query_set = Test.objects.join_custom_field(query_set,396 attribute_query, alias)397 query_set = self._add_select_value(query_set, alias)398 return query_set399 def get_query_set_with_joins(self, filter_data):400 """Add joins for querying over test-related items.401 These parameters are supported going forward:402 * test_attribute_fields: list of attribute names. Each attribute will403 be available as a column attribute_<name>.value.404 * test_label_fields: list of label names. Each label will be available405 as a column label_<name>.id, non-null iff the label is present.406 * iteration_result_fields: list of iteration result names. Each407 result will be available as a column iteration_<name>.value.408 Note that this changes the semantics to return iterations409 instead of tests -- if a test has multiple iterations, a row410 will be returned for each one. The iteration index is also411 available as iteration_<name>.iteration....

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:


You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run autotest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?