From 70722b7055d7802464e605c97096d5d2f7c4fa02 Mon Sep 17 00:00:00 2001 From: gpoujol Date: Tue, 27 Jun 2023 14:00:42 +0200 Subject: [PATCH 1/3] feat: improve expected/actual payload when comparing data in checks --- libraries/assertionUtils.py | 40 +++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 2 files changed, 41 insertions(+) diff --git a/libraries/assertionUtils.py b/libraries/assertionUtils.py index 36fbf0d1..18135aea 100644 --- a/libraries/assertionUtils.py +++ b/libraries/assertionUtils.py @@ -1,4 +1,15 @@ +from dataclasses import dataclass from deepdiff import DeepDiff +from prettydiff import get_annotated_lines_from_diff, diff_json, Flag +from robot.api import logger +import logging + + +@dataclass +class Theme: + added: str + removed: str + reset: str def compare_dictionaries_ignoring_keys(expected, actual, exclude_regex_paths, group_by=None): @@ -14,4 +25,33 @@ def compare_dictionaries_ignoring_keys(expected, actual, exclude_regex_paths, gr group_by=group_by) else: res = DeepDiff(expected, actual, exclude_regex_paths=exclude_regex_paths, ignore_order=True, verbose_level=1) + + if len(res) > 0: + output_pretty_diff(expected, actual, Theme(added="\033[32m", removed="\033[31m", reset="\033[0m"), + console=True) + output_pretty_diff(expected, actual, Theme(added="", removed="", reset="")) return res + + +def output_pretty_diff(a, b, theme, indent_size: int = 2, console=False): + global log + lines = get_annotated_lines_from_diff(diff_json(a, b)) + + msg = "" + for line in lines: + if Flag.ADDED in line.flags: + flags = f"{theme.added}+ " + elif Flag.REMOVED in line.flags: + flags = f"{theme.removed}- " + else: + flags = f"{theme.reset} " + + msg = msg + flags + " " * (indent_size * line.indent) + line.s + "\n" + + logging.basicConfig(level=logging.WARNING, + filename='app.log') + + if console: + logger.console(msg) + else: + logging.warning(msg) diff --git a/requirements.txt b/requirements.txt index f6f16821..03455a4f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,5 +3,6 @@ robotframework==6.0.2 robotframework-jsonlibrary==0.5 robotframework-requests==0.9.4 deepdiff==6.3.0 +prettydiff==0.1.0 robotframework-httpctrl==0.3.1 robotframework-tidy==4.2.1 -- GitLab From c1b2b9ad21d683a9ca7ecb97ab3f5a14a300b03b Mon Sep 17 00:00:00 2001 From: gpoujol Date: Thu, 29 Jun 2023 12:08:34 +0200 Subject: [PATCH 2/3] feat: add information on which request are launch on console and add documentation on redirect console to file --- README.md | 13 ++++ libraries/assertionUtils.py | 14 +---- libraries/logUtils.py | 22 +++---- resources/ApiUtils.resource | 122 ++++++++++++++++++------------------ 4 files changed, 84 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index 3458ff56..a8c5dc5d 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,19 @@ Launch the tests with the following command: For more running instructions please consult [scripts/run_tests.sh](./scripts/run_tests.sh). +## Redirect console output to have + +To have the whole messages it is necessary to modify the width of the test execution output with the option --consolewidth (-W). The default width is 78 characters. + +```$ robot --consolewidth 150 .``` + +The messages in the console are clear and without noise, only the strictly necessary (request and response to the CB and a nice message which shows the difference between two documents when they are). +However, it can be difficult to follow all the messages in the console when there is a lot of testing and a lot of CB calls. +This is why a command to redirect the console output to a file can be used. +You must add a chevron at the end of the test launch command followed by the file name. + +```$ robot . > 'results.log``` + ## Generate a documentation for the support keywords ```$ python3 -m robot.libdoc resources/ApiUtils.resource api_docs/ApiUtils.html``` diff --git a/libraries/assertionUtils.py b/libraries/assertionUtils.py index 18135aea..ec9d3ba3 100644 --- a/libraries/assertionUtils.py +++ b/libraries/assertionUtils.py @@ -2,7 +2,6 @@ from dataclasses import dataclass from deepdiff import DeepDiff from prettydiff import get_annotated_lines_from_diff, diff_json, Flag from robot.api import logger -import logging @dataclass @@ -20,6 +19,8 @@ def compare_dictionaries_ignoring_keys(expected, actual, exclude_regex_paths, gr :param group_by: a key to group the results, useful for lists of results """ + logger.info("Compare two dictionaries (expected, actual)", also_console=True) + if group_by is not None: res = DeepDiff(expected, actual, exclude_regex_paths=exclude_regex_paths, ignore_order=True, verbose_level=1, group_by=group_by) @@ -27,14 +28,11 @@ def compare_dictionaries_ignoring_keys(expected, actual, exclude_regex_paths, gr res = DeepDiff(expected, actual, exclude_regex_paths=exclude_regex_paths, ignore_order=True, verbose_level=1) if len(res) > 0: - output_pretty_diff(expected, actual, Theme(added="\033[32m", removed="\033[31m", reset="\033[0m"), - console=True) output_pretty_diff(expected, actual, Theme(added="", removed="", reset="")) return res def output_pretty_diff(a, b, theme, indent_size: int = 2, console=False): - global log lines = get_annotated_lines_from_diff(diff_json(a, b)) msg = "" @@ -48,10 +46,4 @@ def output_pretty_diff(a, b, theme, indent_size: int = 2, console=False): msg = msg + flags + " " * (indent_size * line.indent) + line.s + "\n" - logging.basicConfig(level=logging.WARNING, - filename='app.log') - - if console: - logger.console(msg) - else: - logging.warning(msg) + logger.info(msg, also_console=True) diff --git a/libraries/logUtils.py b/libraries/logUtils.py index dec7fef5..07f0b06e 100644 --- a/libraries/logUtils.py +++ b/libraries/logUtils.py @@ -1,15 +1,15 @@ from __future__ import unicode_literals from __future__ import division -from pygments import highlight, lexers, formatters from json import dumps, JSONDecodeError, loads from robot.api import logger from robot.api.deco import keyword @keyword(name="Output", tags=("I/O",)) -def output(response, console=True): +def output(response, description, console=True): """*Request and response are output to terminal and file (in JSON).* :param response: response to a request + :param description: explains what request is being made :param console: If false, the JSON is not written to terminal. Default is true. """ @@ -34,16 +34,8 @@ def output(response, console=True): pretty_request_json = dumps(request_json, indent=4, sort_keys=False, separators=(",", ": ")) pretty_response_json = dumps(response_json, indent=4, sort_keys=False, separators=(",", ": ")) - logger.info(pretty_request_json) - logger.info(pretty_response_json) - - if console: - pretty_request_json_colored = highlight( - pretty_request_json, lexers.JsonLexer(), formatters.TerminalFormatter() - ) - pretty_response_json_colored = highlight( - pretty_response_json, lexers.JsonLexer(), formatters.TerminalFormatter() - ) - - logger.console(pretty_request_json_colored) - logger.console(pretty_response_json_colored) + logger.info(description, also_console=True) + logger.info("Request ->", also_console=True) + logger.info(pretty_request_json, also_console=True) + logger.info("Response ->", also_console=True) + logger.info(pretty_response_json, also_console=True) diff --git a/resources/ApiUtils.resource b/resources/ApiUtils.resource index da6ba285..fad075fc 100755 --- a/resources/ApiUtils.resource +++ b/resources/ApiUtils.resource @@ -44,13 +44,13 @@ ${response} ${EMPTY} Delete Entity by Id Returning Response [Arguments] ${id} ${response}= DELETE url=${url}/${ENTITIES_ENDPOINT_PATH}${id} expected_status=any - Output ${response} + Output ${response} 'Delete Entity by Id Returning Response' RETURN ${response} Delete Entity by Id [Arguments] ${id} ${response}= DELETE url=${url}/${ENTITIES_ENDPOINT_PATH}${id} expected_status=any - Output ${response} + Output ${response} 'Delete Entity by Id' RETURN ${response} Query Entity @@ -87,7 +87,7 @@ Query Entity ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Entity' RETURN ${response} Query Entities @@ -149,7 +149,7 @@ Query Entities ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Entities' RETURN ${response} Query Entities Via POST @@ -184,7 +184,7 @@ Query Entities Via POST ... json=${params} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Query Entities Via POST' RETURN ${response} Retrieve Entity by Id @@ -197,7 +197,7 @@ Retrieve Entity by Id ... Link=<${context}>; rel="http://www.w3.org/ns/json-ld#context";type="application/ld+json" END ${response}= GET url=${url}/${ENTITIES_ENDPOINT_PATH}${id} headers=${headers} expected_status=any - Output ${response} + Output ${response} 'Retrieve Entity by Id' RETURN ${response} Create Entity Selecting Content Type @@ -218,7 +218,7 @@ Create Entity Selecting Content Type ... json=${entity} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Entity Selecting Content Type' RETURN ${response} Append Entity Attributes @@ -230,7 +230,7 @@ Append Entity Attributes ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Append Entity Attributes' RETURN ${response} Append Entity Attributes With Parameters @@ -242,7 +242,7 @@ Append Entity Attributes With Parameters ... json=${fragment_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Append Entity Attributes With Parameters' RETURN ${response} Update Entity Attributes @@ -254,7 +254,7 @@ Update Entity Attributes ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Update Entity Attributes' RETURN ${response} Delete Entity Attributes @@ -277,7 +277,7 @@ Delete Entity Attributes ... url=${url}/${ENTITIES_ENDPOINT_PATH}${entityId}/attrs/${attributeId}?${params_as_string} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Delete Entity Attributes' RETURN ${response} Partial Update Entity Attributes @@ -303,7 +303,7 @@ Partial Update Entity Attributes ... json=${fragment_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Partial Update Entity Attributes' RETURN ${response} Retrieve Entity Types @@ -325,7 +325,7 @@ Retrieve Entity Types ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Entity Types' RETURN ${response} Retrieve Entity Type @@ -344,7 +344,7 @@ Retrieve Entity Type ... url=${url}/${ENTITIES_TYPES_ENDPOINT_PATH}/${type} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Entity Type' RETURN ${response} Retrieve Attributes @@ -366,7 +366,7 @@ Retrieve Attributes ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Attributes' RETURN ${response} Retrieve Attribute @@ -385,7 +385,7 @@ Retrieve Attribute ... url=${url}/${ATTRIBUTES_ENDPOINT_PATH}/${attribute_name} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Attribute' RETURN ${response} Create Context Source Registration With Return @@ -404,7 +404,7 @@ Create Context Source Registration With Return ... json=${payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Context Source Registration' RETURN ${response} Update Context Source Registration With Return @@ -416,7 +416,7 @@ Update Context Source Registration With Return ... json=${fragment} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Update Context Source Registration' RETURN ${response} Delete Context Source Registration With Return @@ -424,7 +424,7 @@ Delete Context Source Registration With Return ${response}= DELETE ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${registration_id} ... expected_status=any - Output ${response} + Output ${response} 'Delete Context Source Registration' RETURN ${response} Create Entity @@ -437,7 +437,7 @@ Create Entity ... json=${entity} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Entity' RETURN ${response} Create Or Update Temporal Representation Of Entity Selecting Content Type @@ -456,7 +456,7 @@ Create Or Update Temporal Representation Of Entity Selecting Content Type ... json=${temporal_entity_representation} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Or Update Temporal Representation Of Entity Selecting Content Type' RETURN ${response} Create Temporal Representation Of Entity Selecting Content Type @@ -468,7 +468,7 @@ Create Temporal Representation Of Entity Selecting Content Type ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Temporal Representation Of Entity Selecting Content Type' RETURN ${response} Append Attribute To Temporal Entity @@ -480,7 +480,7 @@ Append Attribute To Temporal Entity ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Append Attribute To Temporal Entity' RETURN ${response} Modify Attribute Instance From Temporal Entity @@ -503,7 +503,7 @@ Modify Attribute Instance From Temporal Entity ... json=${fragment_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Modify Attribute Instance From Temporal Entity' RETURN ${response} Delete Attribute From Temporal Entity @@ -532,7 +532,7 @@ Delete Attribute From Temporal Entity ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${entityId}/attrs/${attributeId}?${params_as_string} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Delete Attribute From Temporal Entity' RETURN ${response} Delete Temporal Representation Of Entity With Returning Response @@ -540,7 +540,7 @@ Delete Temporal Representation Of Entity With Returning Response ${response}= DELETE ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${temporal_entity_representation_id} ... expected_status=any - Output ${response} + Output ${response} 'Delete Temporal Representation Of Entity' RETURN ${response} Get Temporal Representation Of Entity @@ -568,7 +568,7 @@ Get Temporal Representation Of Entity ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Get Temporal Representation Of Entity' RETURN ${response} Delete Attribute Instance From Temporal Entity @@ -583,7 +583,7 @@ Delete Attribute Instance From Temporal Entity ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${temporal_entity_id}/attrs/${attributeId}/${instanceId} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Delete Attribute Instance From Temporal Entity' RETURN ${response} Update Temporal Representation Of Entity Selecting Content Type @@ -601,7 +601,7 @@ Update Temporal Representation Of Entity Selecting Content Type ... json=${temporal_entity_fragment} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Update Temporal Representation Of Entity Selecting Content Type' RETURN ${response} Batch Create Entities @@ -625,7 +625,7 @@ Batch Create Entities ... json=@{entities_to_be_created} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Batch Create Entities' RETURN ${response} Batch Upsert Entities @@ -636,7 +636,7 @@ Batch Upsert Entities ... json=@{entities_to_be_upserted} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Batch Upsert Entities' RETURN ${response} Batch Update Entities @@ -647,7 +647,7 @@ Batch Update Entities ... json=@{entities_to_be_updated} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Batch Update Entities' RETURN ${response} Batch Delete Entities @@ -658,7 +658,7 @@ Batch Delete Entities ... json=@{entities_ids_to_be_deleted} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Batch Delete Entities' RETURN ${response} Request Entity From File @@ -670,7 +670,7 @@ Request Entity From File ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Request Entity From File' RETURN ${response} Batch Request Entities From File @@ -683,7 +683,7 @@ Batch Request Entities From File ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Batch Request Entities From File' RETURN ${response} Create Temporal Representation Of Entity @@ -700,7 +700,7 @@ Create Temporal Representation Of Entity ... json=${temporal_entity_representation} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Temporal Representation Of Entity' RETURN ${response} Retrieve Temporal Representation Of Entity @@ -743,7 +743,7 @@ Retrieve Temporal Representation Of Entity ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Temporal Representation Of Entity' RETURN ${response} Query Temporal Representation Of Entities @@ -811,7 +811,7 @@ Query Temporal Representation Of Entities ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Temporal Representation Of Entities' RETURN ${response} Query Temporal Representation Of Entities Via Post @@ -827,7 +827,7 @@ Query Temporal Representation Of Entities Via Post ... json=${query_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Query Temporal Representation Of Entities Via Post' RETURN ${response} Delete Temporal Representation Of Entity @@ -836,7 +836,7 @@ Delete Temporal Representation Of Entity ${response}= DELETE ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${temporal_entity_representation_id} ... expected_status=any - Output ${response} + Output ${response} 'Delete Temporal Representation Of Entity' RETURN ${response} Create Context Source Registration @@ -848,7 +848,7 @@ Create Context Source Registration ... json=${context_source_registration_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Context Source Registration' RETURN ${response} Update Context Source Registration @@ -858,7 +858,7 @@ Update Context Source Registration ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} ... json=${update_fragment} ... expected_status=any - Output ${response} + Output ${response} 'Update Context Source Registration' RETURN ${response} Query Context Source Registrations @@ -918,14 +918,14 @@ Query Context Source Registrations ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Context Source Registrations' RETURN ${response} Delete Context Source Registration [Arguments] ${context_source_registration_id} ${response}= DELETE url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} - Output ${response} + Output ${response} 'Delete Context Source Registration' RETURN ${response} Retrieve Context Source Registration @@ -942,7 +942,7 @@ Retrieve Context Source Registration ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Context Source Registration' RETURN ${response} Create Context Source Registration Subscription @@ -957,7 +957,7 @@ Create Context Source Registration Subscription ... json=${subscription_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Context Source Registration Subscription' RETURN ${response} Update Context Source Registration Subscription @@ -967,7 +967,7 @@ Update Context Source Registration Subscription ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} ... json=${subscription_update_fragment} ... expected_status=any - Output ${response} + Output ${response} 'Update Context Source Registration Subscription' RETURN ${response} Retrieve Context Source Registration Subscription @@ -984,7 +984,7 @@ Retrieve Context Source Registration Subscription ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Retrieve Context Source Registration Subscription' RETURN ${response} Query Context Source Registration Subscriptions @@ -1006,14 +1006,14 @@ Query Context Source Registration Subscriptions ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Context Source Registration Subscriptions' RETURN ${response} Delete Context Source Registration Subscription [Arguments] ${subscription_id} ${response}= DELETE ${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} - Output ${response} + Output ${response} 'Delete Context Source Registration Subscription' RETURN ${response} Update Context Source Registration Subscription From File @@ -1023,7 +1023,7 @@ Update Context Source Registration Subscription From File ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} ... data=${file_content} ... expected_status=any - Output ${response} + Output ${response} 'Update Context Source Registration Subscription From File' RETURN ${response} Create Subscription @@ -1049,7 +1049,7 @@ Create Subscription ... json=${subscription} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Subscription' RETURN ${response} Create Subscription From Subscription Payload @@ -1072,7 +1072,7 @@ Create Subscription From Subscription Payload ... json=${subscription_payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Subscription From Subscription Payload' RETURN ${response} Create Subscription From File @@ -1084,7 +1084,7 @@ Create Subscription From File ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Create Subscription From File' RETURN ${response} Update Subscription @@ -1109,7 +1109,7 @@ Update Subscription ... json=${subscription_update_fragment} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Update Subscription' RETURN ${response} Update Subscription With Payload @@ -1128,13 +1128,13 @@ Update Subscription With Payload ... json=${payload} ... headers=${headers} ... expected_status=any - Output ${response} + Output ${response} 'Update Subscription With Payload' RETURN ${response} Delete Subscription [Arguments] ${subscription_id} ${response}= DELETE url=${url}/${SUBSCRIPTION_ENDPOINT_PATH}${subscription_id} expected_status=any - Output ${response} + Output ${response} 'Delete Subscription' RETURN ${response} Query Subscriptions @@ -1158,7 +1158,7 @@ Query Subscriptions ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Subscriptions' RETURN ${response} Retrieve Subscription @@ -1175,7 +1175,7 @@ Retrieve Subscription END ${response}= GET url=${url}/${SUBSCRIPTION_ENDPOINT_PATH}${id} headers=${headers} expected_status=any - Output ${response} + Output ${response} 'Retrieve Subscription' RETURN ${response} Query Context Source Registrations With Return @@ -1235,7 +1235,7 @@ Query Context Source Registrations With Return ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Context Source Registrations' RETURN ${response} Query Temporal Representation Of Entities With Return @@ -1303,5 +1303,5 @@ Query Temporal Representation Of Entities With Return ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} + Output ${response} 'Query Temporal Representation Of Entities' RETURN ${response} -- GitLab From dc390baf2819754f1472d8cb7994a07d1f21bb5e Mon Sep 17 00:00:00 2001 From: gpoujol Date: Thu, 29 Jun 2023 15:50:39 +0200 Subject: [PATCH 3/3] feat: make message less verbose --- libraries/assertionUtils.py | 3 +- libraries/logUtils.py | 2 +- resources/ApiUtils.resource | 122 +++++++++++++++--------------- resources/AssertionUtils.resource | 5 +- 4 files changed, 67 insertions(+), 65 deletions(-) diff --git a/libraries/assertionUtils.py b/libraries/assertionUtils.py index ec9d3ba3..e0ac15dc 100644 --- a/libraries/assertionUtils.py +++ b/libraries/assertionUtils.py @@ -19,8 +19,6 @@ def compare_dictionaries_ignoring_keys(expected, actual, exclude_regex_paths, gr :param group_by: a key to group the results, useful for lists of results """ - logger.info("Compare two dictionaries (expected, actual)", also_console=True) - if group_by is not None: res = DeepDiff(expected, actual, exclude_regex_paths=exclude_regex_paths, ignore_order=True, verbose_level=1, group_by=group_by) @@ -33,6 +31,7 @@ def compare_dictionaries_ignoring_keys(expected, actual, exclude_regex_paths, gr def output_pretty_diff(a, b, theme, indent_size: int = 2, console=False): + logger.info("Dictionary comparison failed with -> ", also_console=True) lines = get_annotated_lines_from_diff(diff_json(a, b)) msg = "" diff --git a/libraries/logUtils.py b/libraries/logUtils.py index 07f0b06e..9254bc59 100644 --- a/libraries/logUtils.py +++ b/libraries/logUtils.py @@ -34,7 +34,7 @@ def output(response, description, console=True): pretty_request_json = dumps(request_json, indent=4, sort_keys=False, separators=(",", ": ")) pretty_response_json = dumps(response_json, indent=4, sort_keys=False, separators=(",", ": ")) - logger.info(description, also_console=True) + logger.info("\n" + description, also_console=True) logger.info("Request ->", also_console=True) logger.info(pretty_request_json, also_console=True) logger.info("Response ->", also_console=True) diff --git a/resources/ApiUtils.resource b/resources/ApiUtils.resource index fad075fc..377a9c85 100755 --- a/resources/ApiUtils.resource +++ b/resources/ApiUtils.resource @@ -44,13 +44,13 @@ ${response} ${EMPTY} Delete Entity by Id Returning Response [Arguments] ${id} ${response}= DELETE url=${url}/${ENTITIES_ENDPOINT_PATH}${id} expected_status=any - Output ${response} 'Delete Entity by Id Returning Response' + Output ${response} Delete Entity by Id Returning Response RETURN ${response} Delete Entity by Id [Arguments] ${id} ${response}= DELETE url=${url}/${ENTITIES_ENDPOINT_PATH}${id} expected_status=any - Output ${response} 'Delete Entity by Id' + Output ${response} Delete Entity by Id RETURN ${response} Query Entity @@ -87,7 +87,7 @@ Query Entity ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Entity' + Output ${response} Query Entity RETURN ${response} Query Entities @@ -149,7 +149,7 @@ Query Entities ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Entities' + Output ${response} Query Entities RETURN ${response} Query Entities Via POST @@ -184,7 +184,7 @@ Query Entities Via POST ... json=${params} ... headers=${headers} ... expected_status=any - Output ${response} 'Query Entities Via POST' + Output ${response} Query Entities Via POST RETURN ${response} Retrieve Entity by Id @@ -197,7 +197,7 @@ Retrieve Entity by Id ... Link=<${context}>; rel="http://www.w3.org/ns/json-ld#context";type="application/ld+json" END ${response}= GET url=${url}/${ENTITIES_ENDPOINT_PATH}${id} headers=${headers} expected_status=any - Output ${response} 'Retrieve Entity by Id' + Output ${response} Retrieve Entity by Id RETURN ${response} Create Entity Selecting Content Type @@ -218,7 +218,7 @@ Create Entity Selecting Content Type ... json=${entity} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Entity Selecting Content Type' + Output ${response} Create Entity Selecting Content Type RETURN ${response} Append Entity Attributes @@ -230,7 +230,7 @@ Append Entity Attributes ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Append Entity Attributes' + Output ${response} Append Entity Attributes RETURN ${response} Append Entity Attributes With Parameters @@ -242,7 +242,7 @@ Append Entity Attributes With Parameters ... json=${fragment_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Append Entity Attributes With Parameters' + Output ${response} Append Entity Attributes With Parameters RETURN ${response} Update Entity Attributes @@ -254,7 +254,7 @@ Update Entity Attributes ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Update Entity Attributes' + Output ${response} Update Entity Attributes RETURN ${response} Delete Entity Attributes @@ -277,7 +277,7 @@ Delete Entity Attributes ... url=${url}/${ENTITIES_ENDPOINT_PATH}${entityId}/attrs/${attributeId}?${params_as_string} ... headers=${headers} ... expected_status=any - Output ${response} 'Delete Entity Attributes' + Output ${response} Delete Entity Attributes RETURN ${response} Partial Update Entity Attributes @@ -303,7 +303,7 @@ Partial Update Entity Attributes ... json=${fragment_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Partial Update Entity Attributes' + Output ${response} Partial Update Entity Attributes RETURN ${response} Retrieve Entity Types @@ -325,7 +325,7 @@ Retrieve Entity Types ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Retrieve Entity Types' + Output ${response} Retrieve Entity Types RETURN ${response} Retrieve Entity Type @@ -344,7 +344,7 @@ Retrieve Entity Type ... url=${url}/${ENTITIES_TYPES_ENDPOINT_PATH}/${type} ... headers=${headers} ... expected_status=any - Output ${response} 'Retrieve Entity Type' + Output ${response} Retrieve Entity Type RETURN ${response} Retrieve Attributes @@ -366,7 +366,7 @@ Retrieve Attributes ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Retrieve Attributes' + Output ${response} Retrieve Attributes RETURN ${response} Retrieve Attribute @@ -385,7 +385,7 @@ Retrieve Attribute ... url=${url}/${ATTRIBUTES_ENDPOINT_PATH}/${attribute_name} ... headers=${headers} ... expected_status=any - Output ${response} 'Retrieve Attribute' + Output ${response} Retrieve Attribute RETURN ${response} Create Context Source Registration With Return @@ -404,7 +404,7 @@ Create Context Source Registration With Return ... json=${payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Context Source Registration' + Output ${response} Create Context Source Registration RETURN ${response} Update Context Source Registration With Return @@ -416,7 +416,7 @@ Update Context Source Registration With Return ... json=${fragment} ... headers=${headers} ... expected_status=any - Output ${response} 'Update Context Source Registration' + Output ${response} Update Context Source Registration RETURN ${response} Delete Context Source Registration With Return @@ -424,7 +424,7 @@ Delete Context Source Registration With Return ${response}= DELETE ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${registration_id} ... expected_status=any - Output ${response} 'Delete Context Source Registration' + Output ${response} Delete Context Source Registration RETURN ${response} Create Entity @@ -437,7 +437,7 @@ Create Entity ... json=${entity} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Entity' + Output ${response} Create Entity RETURN ${response} Create Or Update Temporal Representation Of Entity Selecting Content Type @@ -456,7 +456,7 @@ Create Or Update Temporal Representation Of Entity Selecting Content Type ... json=${temporal_entity_representation} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Or Update Temporal Representation Of Entity Selecting Content Type' + Output ${response} Create Or Update Temporal Representation Of Entity Selecting Content Type RETURN ${response} Create Temporal Representation Of Entity Selecting Content Type @@ -468,7 +468,7 @@ Create Temporal Representation Of Entity Selecting Content Type ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Temporal Representation Of Entity Selecting Content Type' + Output ${response} Create Temporal Representation Of Entity Selecting Content Type RETURN ${response} Append Attribute To Temporal Entity @@ -480,7 +480,7 @@ Append Attribute To Temporal Entity ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Append Attribute To Temporal Entity' + Output ${response} Append Attribute To Temporal Entity RETURN ${response} Modify Attribute Instance From Temporal Entity @@ -503,7 +503,7 @@ Modify Attribute Instance From Temporal Entity ... json=${fragment_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Modify Attribute Instance From Temporal Entity' + Output ${response} Modify Attribute Instance From Temporal Entity RETURN ${response} Delete Attribute From Temporal Entity @@ -532,7 +532,7 @@ Delete Attribute From Temporal Entity ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${entityId}/attrs/${attributeId}?${params_as_string} ... headers=${headers} ... expected_status=any - Output ${response} 'Delete Attribute From Temporal Entity' + Output ${response} Delete Attribute From Temporal Entity RETURN ${response} Delete Temporal Representation Of Entity With Returning Response @@ -540,7 +540,7 @@ Delete Temporal Representation Of Entity With Returning Response ${response}= DELETE ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${temporal_entity_representation_id} ... expected_status=any - Output ${response} 'Delete Temporal Representation Of Entity' + Output ${response} Delete Temporal Representation Of Entity RETURN ${response} Get Temporal Representation Of Entity @@ -568,7 +568,7 @@ Get Temporal Representation Of Entity ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Get Temporal Representation Of Entity' + Output ${response} Get Temporal Representation Of Entity RETURN ${response} Delete Attribute Instance From Temporal Entity @@ -583,7 +583,7 @@ Delete Attribute Instance From Temporal Entity ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${temporal_entity_id}/attrs/${attributeId}/${instanceId} ... headers=${headers} ... expected_status=any - Output ${response} 'Delete Attribute Instance From Temporal Entity' + Output ${response} Delete Attribute Instance From Temporal Entity RETURN ${response} Update Temporal Representation Of Entity Selecting Content Type @@ -601,7 +601,7 @@ Update Temporal Representation Of Entity Selecting Content Type ... json=${temporal_entity_fragment} ... headers=${headers} ... expected_status=any - Output ${response} 'Update Temporal Representation Of Entity Selecting Content Type' + Output ${response} Update Temporal Representation Of Entity Selecting Content Type RETURN ${response} Batch Create Entities @@ -625,7 +625,7 @@ Batch Create Entities ... json=@{entities_to_be_created} ... headers=${headers} ... expected_status=any - Output ${response} 'Batch Create Entities' + Output ${response} Batch Create Entities RETURN ${response} Batch Upsert Entities @@ -636,7 +636,7 @@ Batch Upsert Entities ... json=@{entities_to_be_upserted} ... headers=${headers} ... expected_status=any - Output ${response} 'Batch Upsert Entities' + Output ${response} Batch Upsert Entities RETURN ${response} Batch Update Entities @@ -647,7 +647,7 @@ Batch Update Entities ... json=@{entities_to_be_updated} ... headers=${headers} ... expected_status=any - Output ${response} 'Batch Update Entities' + Output ${response} Batch Update Entities RETURN ${response} Batch Delete Entities @@ -658,7 +658,7 @@ Batch Delete Entities ... json=@{entities_ids_to_be_deleted} ... headers=${headers} ... expected_status=any - Output ${response} 'Batch Delete Entities' + Output ${response} Batch Delete Entities RETURN ${response} Request Entity From File @@ -670,7 +670,7 @@ Request Entity From File ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Request Entity From File' + Output ${response} Request Entity From File RETURN ${response} Batch Request Entities From File @@ -683,7 +683,7 @@ Batch Request Entities From File ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Batch Request Entities From File' + Output ${response} Batch Request Entities From File RETURN ${response} Create Temporal Representation Of Entity @@ -700,7 +700,7 @@ Create Temporal Representation Of Entity ... json=${temporal_entity_representation} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Temporal Representation Of Entity' + Output ${response} Create Temporal Representation Of Entity RETURN ${response} Retrieve Temporal Representation Of Entity @@ -743,7 +743,7 @@ Retrieve Temporal Representation Of Entity ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Retrieve Temporal Representation Of Entity' + Output ${response} Retrieve Temporal Representation Of Entity RETURN ${response} Query Temporal Representation Of Entities @@ -811,7 +811,7 @@ Query Temporal Representation Of Entities ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Temporal Representation Of Entities' + Output ${response} Query Temporal Representation Of Entities RETURN ${response} Query Temporal Representation Of Entities Via Post @@ -827,7 +827,7 @@ Query Temporal Representation Of Entities Via Post ... json=${query_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Query Temporal Representation Of Entities Via Post' + Output ${response} Query Temporal Representation Of Entities Via Post RETURN ${response} Delete Temporal Representation Of Entity @@ -836,7 +836,7 @@ Delete Temporal Representation Of Entity ${response}= DELETE ... url=${url}/${TEMPORAL_ENTITIES_ENDPOINT_PATH}/${temporal_entity_representation_id} ... expected_status=any - Output ${response} 'Delete Temporal Representation Of Entity' + Output ${response} Delete Temporal Representation Of Entity RETURN ${response} Create Context Source Registration @@ -848,7 +848,7 @@ Create Context Source Registration ... json=${context_source_registration_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Context Source Registration' + Output ${response} Create Context Source Registration RETURN ${response} Update Context Source Registration @@ -858,7 +858,7 @@ Update Context Source Registration ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} ... json=${update_fragment} ... expected_status=any - Output ${response} 'Update Context Source Registration' + Output ${response} Update Context Source Registration RETURN ${response} Query Context Source Registrations @@ -918,14 +918,14 @@ Query Context Source Registrations ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Context Source Registrations' + Output ${response} Query Context Source Registrations RETURN ${response} Delete Context Source Registration [Arguments] ${context_source_registration_id} ${response}= DELETE url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} - Output ${response} 'Delete Context Source Registration' + Output ${response} Delete Context Source Registration RETURN ${response} Retrieve Context Source Registration @@ -942,7 +942,7 @@ Retrieve Context Source Registration ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} ... headers=${headers} ... expected_status=any - Output ${response} 'Retrieve Context Source Registration' + Output ${response} Retrieve Context Source Registration RETURN ${response} Create Context Source Registration Subscription @@ -957,7 +957,7 @@ Create Context Source Registration Subscription ... json=${subscription_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Context Source Registration Subscription' + Output ${response} Create Context Source Registration Subscription RETURN ${response} Update Context Source Registration Subscription @@ -967,7 +967,7 @@ Update Context Source Registration Subscription ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} ... json=${subscription_update_fragment} ... expected_status=any - Output ${response} 'Update Context Source Registration Subscription' + Output ${response} Update Context Source Registration Subscription RETURN ${response} Retrieve Context Source Registration Subscription @@ -984,7 +984,7 @@ Retrieve Context Source Registration Subscription ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} ... headers=${headers} ... expected_status=any - Output ${response} 'Retrieve Context Source Registration Subscription' + Output ${response} Retrieve Context Source Registration Subscription RETURN ${response} Query Context Source Registration Subscriptions @@ -1006,14 +1006,14 @@ Query Context Source Registration Subscriptions ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Context Source Registration Subscriptions' + Output ${response} Query Context Source Registration Subscriptions RETURN ${response} Delete Context Source Registration Subscription [Arguments] ${subscription_id} ${response}= DELETE ${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} - Output ${response} 'Delete Context Source Registration Subscription' + Output ${response} Delete Context Source Registration Subscription RETURN ${response} Update Context Source Registration Subscription From File @@ -1023,7 +1023,7 @@ Update Context Source Registration Subscription From File ... url=${url}/${CONTEXT_SOURCE_REGISTRATION_SUBSCRIPTION_ENDPOINT_PATH}/${subscription_id} ... data=${file_content} ... expected_status=any - Output ${response} 'Update Context Source Registration Subscription From File' + Output ${response} Update Context Source Registration Subscription From File RETURN ${response} Create Subscription @@ -1049,7 +1049,7 @@ Create Subscription ... json=${subscription} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Subscription' + Output ${response} Create Subscription RETURN ${response} Create Subscription From Subscription Payload @@ -1072,7 +1072,7 @@ Create Subscription From Subscription Payload ... json=${subscription_payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Subscription From Subscription Payload' + Output ${response} Create Subscription From Subscription Payload RETURN ${response} Create Subscription From File @@ -1084,7 +1084,7 @@ Create Subscription From File ... data=${file_content} ... headers=${headers} ... expected_status=any - Output ${response} 'Create Subscription From File' + Output ${response} Create Subscription From File RETURN ${response} Update Subscription @@ -1109,7 +1109,7 @@ Update Subscription ... json=${subscription_update_fragment} ... headers=${headers} ... expected_status=any - Output ${response} 'Update Subscription' + Output ${response} Update Subscription RETURN ${response} Update Subscription With Payload @@ -1128,13 +1128,13 @@ Update Subscription With Payload ... json=${payload} ... headers=${headers} ... expected_status=any - Output ${response} 'Update Subscription With Payload' + Output ${response} Update Subscription With Payload RETURN ${response} Delete Subscription [Arguments] ${subscription_id} ${response}= DELETE url=${url}/${SUBSCRIPTION_ENDPOINT_PATH}${subscription_id} expected_status=any - Output ${response} 'Delete Subscription' + Output ${response} Delete Subscription RETURN ${response} Query Subscriptions @@ -1158,7 +1158,7 @@ Query Subscriptions ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Subscriptions' + Output ${response} Query Subscriptions RETURN ${response} Retrieve Subscription @@ -1175,7 +1175,7 @@ Retrieve Subscription END ${response}= GET url=${url}/${SUBSCRIPTION_ENDPOINT_PATH}${id} headers=${headers} expected_status=any - Output ${response} 'Retrieve Subscription' + Output ${response} Retrieve Subscription RETURN ${response} Query Context Source Registrations With Return @@ -1235,7 +1235,7 @@ Query Context Source Registrations With Return ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Context Source Registrations' + Output ${response} Query Context Source Registrations RETURN ${response} Query Temporal Representation Of Entities With Return @@ -1303,5 +1303,5 @@ Query Temporal Representation Of Entities With Return ... headers=${headers} ... params=${params} ... expected_status=any - Output ${response} 'Query Temporal Representation Of Entities' + Output ${response} Query Temporal Representation Of Entities RETURN ${response} diff --git a/resources/AssertionUtils.resource b/resources/AssertionUtils.resource index c6dd0a89..52faa52c 100755 --- a/resources/AssertionUtils.resource +++ b/resources/AssertionUtils.resource @@ -19,7 +19,10 @@ ${status_regex_expr}= root\\['status'\\] Check Response Status Code [Arguments] ${expected_status_code} ${response_status_code} ${response_status_code}= convert to string ${response_status_code} - Should Be Equal ${expected_status_code} ${response_status_code} + Should Be Equal + ... ${expected_status_code} + ... ${response_status_code} + ... HTTP status code comparison failed with (expected, actual) -> Check Response Body Containing Array Of URIs set to [Arguments] ${expected_entities_ids} ${response_body} -- GitLab