testit-cli 2.10.3__tar.gz → 2.10.4.post600__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/PKG-INFO +92 -1
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/README.md +91 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/setup.py +1 -1
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_api_result.py +11 -17
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/layer_source.py +5 -4
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/apiclient.py +1 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/click_commands.py +114 -11
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/converter.py +43 -17
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/filter_factory.py +12 -10
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/importer.py +2 -2
- testit_cli-2.10.4.post600/src/testit_cli/launch_filter.py +57 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/config.py +4 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/service.py +48 -1
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/service_factory.py +3 -1
- testit_cli-2.10.4.post600/src/testit_cli/v2_client.py +207 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/validation.py +7 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli.egg-info/PKG-INFO +92 -1
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli.egg-info/SOURCES.txt +5 -0
- testit_cli-2.10.4.post600/tests/test_autotest_layer.py +44 -0
- testit_cli-2.10.4.post600/tests/test_launch.py +204 -0
- testit_cli-2.10.4.post600/tests/test_launch_filter.py +68 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/LICENSE +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/setup.cfg +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/__main__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/attachments_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/auto_tests_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/configurations_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/custom_attributes_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/parameters_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/project_attributes_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/project_sections_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/project_work_items_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/projects_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/sections_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/test_results_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/test_runs_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/work_items_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api/workflows_api.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/api_client.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/apis/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/configuration.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/exceptions.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_auto_tests_id_work_items_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_auto_tests_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_auto_tests_put_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_auto_tests_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_configurations_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_custom_attributes_global_id_put_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_custom_attributes_global_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_custom_attributes_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_parameters_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_parameters_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_projects_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_projects_project_id_attributes_put_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_projects_project_id_attributes_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_projects_project_id_work_items_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_projects_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_sections_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_test_results_id_put_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_test_results_search_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_test_runs_id_reruns_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_test_runs_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_test_runs_put_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/adapters_work_items_post_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/assign_attachment_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/assign_auto_test_case_id_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/assign_iteration_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/attachment_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/attachment_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/attachment_put_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/attachment_put_model_auto_test_step_results_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/attachment_update_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_api_result_layer.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_case_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_create_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_create_api_model_layer.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_filter_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_id_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_model_last_test_result_configuration.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_model_last_test_result_status.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_result_reason_short.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_results_for_test_run_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_search_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_search_api_model_filter.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_search_api_model_includes.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_search_include_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_step.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_step_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_step_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_step_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_step_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_step_result_update_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_update_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/auto_test_work_item_identifier_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/available_test_result_outcome.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/configuration_filter_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/configuration_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/configuration_short_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/create_empty_test_run_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/create_link_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/create_parameter_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/create_project_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/create_step_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/create_work_item_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_option_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_option_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_option_post_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_option_update_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_put_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_search_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_search_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_type.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/custom_attribute_types_enum.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/date_time_range_selector_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/deletion_state.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/detailed_project_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/detailed_project_api_result_workflow.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/failure_category_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/global_custom_attribute_post_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/global_custom_attribute_update_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/guid_extraction_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/image_resize_type.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/int32_range_selector_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/int64_range_selector_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/iteration_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/iteration_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/label_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/label_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/label_short_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/layer_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/layer_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_create_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_post_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_put_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_short_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_type.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/link_update_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/manual_rerun_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/manual_rerun_select_test_results_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/manual_rerun_select_test_results_api_model_extraction_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/manual_rerun_select_test_results_api_model_filter.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/manual_rerun_test_result_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/manual_rerun_test_result_api_model_test_result_ids.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/operation.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/parameter_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/parameter_iteration_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/parameter_short_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/parameter_short_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/parameters_filter_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/problem_details.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/project_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/project_attributes_filter_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/project_shortest_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/project_type_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/projects_filter_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/projects_filter_model_autotests_count.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/projects_filter_model_checklists_count.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/projects_filter_model_created_date.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/projects_filter_model_shared_steps_count.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/projects_filter_model_test_cases_count.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/section_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/section_post_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/section_shared_step.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/section_with_steps_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/shared_step_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/shared_step_result_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/step_comment_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/step_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/step_post_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/step_result_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/tag_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_link_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_outcome.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_response.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_short_response.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_short_response_status.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_step_comment_update_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_result_update_request.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_results_filter_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_results_filter_api_model_duration.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_run_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_run_api_result_status.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_run_state.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_status_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_status_api_type.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_status_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/test_status_type.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/update_empty_test_run_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/update_link_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/validation_problem_details.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_entity_type_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_filter_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_filter_api_model_duration.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_id_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_parameter_key_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_parameter_key_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_priority_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_priority_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_select_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_select_api_model_filter.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_short_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_source_type_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_state_api_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_states.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/work_item_type_model.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/workflow_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/workflow_status_api_result.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model_utils.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/models/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/rest.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/autotests_filter.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/dir_worker.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/file_worker.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/html_escape_utils.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/http_retry.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/logger.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/__init__.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/mode.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/status_type.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/testcase.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/testrun.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/models/testrun_link.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/parser.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/testrun_metadata.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli.egg-info/dependency_links.txt +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli.egg-info/entry_points.txt +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli.egg-info/requires.txt +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli.egg-info/top_level.txt +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/tests/test_click.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/tests/test_service.py +0 -0
- {testit_cli-2.10.3 → testit_cli-2.10.4.post600}/tests/test_testrun_metadata.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: testit-cli
|
|
3
|
-
Version: 2.10.
|
|
3
|
+
Version: 2.10.4.post600
|
|
4
4
|
Summary: This tool is the command line wrapper of Test IT allowing you to upload the test results in real time to Test IT
|
|
5
5
|
Home-page: https://pypi.org/project/testit-cli/
|
|
6
6
|
Author: Integration team
|
|
@@ -59,12 +59,75 @@ You can see more information in [official documentation](https://docs.testit.sof
|
|
|
59
59
|
| 5.6 | 2.8.1.post560 |
|
|
60
60
|
| 5.7 | 2.9.1.post570 |
|
|
61
61
|
| 5.8 | 2.10.0.post580 |
|
|
62
|
+
| 6.0 | 2.10.4.post600 |
|
|
62
63
|
| Cloud | 2.8.0 + |
|
|
63
64
|
|
|
64
65
|
1. For current versions, see the releases tab.
|
|
65
66
|
2. Starting with 5.2, we have added a TMS postscript, which means that the utility is compatible with a specific enterprise version.
|
|
66
67
|
3. If you are in doubt about which version to use, check with the support staff. support@yoonion.ru
|
|
67
68
|
|
|
69
|
+
## Launch a filled test run (`testrun create launch`)
|
|
70
|
+
|
|
71
|
+
Unlike `testrun create` (empty run), `testrun create launch` creates a **filled** test run.
|
|
72
|
+
|
|
73
|
+
Provide **exactly one** source:
|
|
74
|
+
|
|
75
|
+
| Source | Flag | Behaviour |
|
|
76
|
+
|-------------------|----------------------------------------|---------------------------------------------------|
|
|
77
|
+
| Test plan | `--test-plan-id` / `-tpi` | Search automated test points in the TMS test plan |
|
|
78
|
+
| Tags | `--filter tags=smoke,nightly` | Search autotests in TMS |
|
|
79
|
+
| External IDs file | `--autotest-external-ids-file` / `-af` | One external ID per line in file |
|
|
80
|
+
|
|
81
|
+
Required: `--url`, `--token`, `--project-id`, `--configuration-id`. Optional: `--testrun-name`, `--output` (also write ID to a file).
|
|
82
|
+
|
|
83
|
+
The command prints `testRunId` to **stdout** (suitable for `export TMS_TEST_RUN_ID=$(...)`).
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
export TMS_TEST_RUN_ID=$(testit testrun create launch \
|
|
87
|
+
--url "$TMS_URL" \
|
|
88
|
+
--token "$TMS_TOKEN" \
|
|
89
|
+
--project-id "$TMS_PROJECT_ID" \
|
|
90
|
+
--configuration-id "$TMS_CONFIGURATION_ID" \
|
|
91
|
+
--filter tags=smoke \
|
|
92
|
+
--testrun-name "CI smoke")
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
From a test plan:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
testit testrun create launch \
|
|
99
|
+
-u "$TMS_URL" -t "$TMS_TOKEN" \
|
|
100
|
+
-pi "$TMS_PROJECT_ID" -ci "$TMS_CONFIGURATION_ID" \
|
|
101
|
+
--test-plan-id "$TMS_TEST_PLAN_ID" \
|
|
102
|
+
-o ./testrun.id
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Autotest external IDs file
|
|
106
|
+
|
|
107
|
+
`--autotest-external-ids-file` / `-af` expects a plain-text file of **autotest external IDs** (the same values as in TMS / `autoTestExternalIds`, not internal UUIDs or global IDs):
|
|
108
|
+
|
|
109
|
+
- one external ID per line;
|
|
110
|
+
- empty lines are ignored;
|
|
111
|
+
- lines starting with `#` are comments;
|
|
112
|
+
- duplicate IDs are ignored.
|
|
113
|
+
|
|
114
|
+
Example `autotest-external-ids.txt`:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
# smoke suite
|
|
118
|
+
login-test-ext-id
|
|
119
|
+
checkout-test-ext-id
|
|
120
|
+
|
|
121
|
+
payment-test-ext-id
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
testit testrun create launch \
|
|
126
|
+
-u "$TMS_URL" -t "$TMS_TOKEN" \
|
|
127
|
+
-pi "$TMS_PROJECT_ID" -ci "$TMS_CONFIGURATION_ID" \
|
|
128
|
+
-af ./autotest-external-ids.txt
|
|
129
|
+
```
|
|
130
|
+
|
|
68
131
|
## Test run tags and links
|
|
69
132
|
|
|
70
133
|
You can attach **test run** tags and links (for example a CI job URL) via CLI flags or environment variables.
|
|
@@ -145,3 +208,31 @@ Notes:
|
|
|
145
208
|
- Test run tags/links are independent from autotest/result tags and links.
|
|
146
209
|
- On an existing run, new tags/links are **merged** (existing values are kept; duplicates by tag name / link URL are skipped).
|
|
147
210
|
- Empty or omitted values mean “do not change tags/links”.
|
|
211
|
+
|
|
212
|
+
## Autotest layer (test pyramid)
|
|
213
|
+
|
|
214
|
+
When importing XML results, CLI can set the **autotest** pyramid layer for every upserted autotest (create/update).
|
|
215
|
+
This is a **run-level default** for file-based import; adapters still read layer from test code annotations.
|
|
216
|
+
|
|
217
|
+
| Intent | CLI | Env |
|
|
218
|
+
|--------|-----|-----|
|
|
219
|
+
| Default autotest layer | `--autotest-layer` / `-al` | `TMS_AUTOTEST_LAYER` |
|
|
220
|
+
|
|
221
|
+
Supported commands: `results import`, `results upload`.
|
|
222
|
+
|
|
223
|
+
Recommended values: `E2E`, `UI`, `API`, `Contract`, `Integration`, `Component`, `Unit`. Any other non-empty string is accepted.
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
export TMS_AUTOTEST_LAYER=API
|
|
227
|
+
testit results import \
|
|
228
|
+
--url "$TMS_URL" \
|
|
229
|
+
--token "$TMS_TOKEN" \
|
|
230
|
+
--project-id "$TMS_PROJECT_ID" \
|
|
231
|
+
--configuration-id "$TMS_CONFIGURATION_ID" \
|
|
232
|
+
--results ./results
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Behaviour (aligned with adapters API):
|
|
236
|
+
|
|
237
|
+
- Layer set → send `layer: { name, source: Run }` on create/update.
|
|
238
|
+
- Layer not set → do not send `layer`; on update always send `resetLayer: false`.
|
|
@@ -25,12 +25,75 @@ You can see more information in [official documentation](https://docs.testit.sof
|
|
|
25
25
|
| 5.6 | 2.8.1.post560 |
|
|
26
26
|
| 5.7 | 2.9.1.post570 |
|
|
27
27
|
| 5.8 | 2.10.0.post580 |
|
|
28
|
+
| 6.0 | 2.10.4.post600 |
|
|
28
29
|
| Cloud | 2.8.0 + |
|
|
29
30
|
|
|
30
31
|
1. For current versions, see the releases tab.
|
|
31
32
|
2. Starting with 5.2, we have added a TMS postscript, which means that the utility is compatible with a specific enterprise version.
|
|
32
33
|
3. If you are in doubt about which version to use, check with the support staff. support@yoonion.ru
|
|
33
34
|
|
|
35
|
+
## Launch a filled test run (`testrun create launch`)
|
|
36
|
+
|
|
37
|
+
Unlike `testrun create` (empty run), `testrun create launch` creates a **filled** test run.
|
|
38
|
+
|
|
39
|
+
Provide **exactly one** source:
|
|
40
|
+
|
|
41
|
+
| Source | Flag | Behaviour |
|
|
42
|
+
|-------------------|----------------------------------------|---------------------------------------------------|
|
|
43
|
+
| Test plan | `--test-plan-id` / `-tpi` | Search automated test points in the TMS test plan |
|
|
44
|
+
| Tags | `--filter tags=smoke,nightly` | Search autotests in TMS |
|
|
45
|
+
| External IDs file | `--autotest-external-ids-file` / `-af` | One external ID per line in file |
|
|
46
|
+
|
|
47
|
+
Required: `--url`, `--token`, `--project-id`, `--configuration-id`. Optional: `--testrun-name`, `--output` (also write ID to a file).
|
|
48
|
+
|
|
49
|
+
The command prints `testRunId` to **stdout** (suitable for `export TMS_TEST_RUN_ID=$(...)`).
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
export TMS_TEST_RUN_ID=$(testit testrun create launch \
|
|
53
|
+
--url "$TMS_URL" \
|
|
54
|
+
--token "$TMS_TOKEN" \
|
|
55
|
+
--project-id "$TMS_PROJECT_ID" \
|
|
56
|
+
--configuration-id "$TMS_CONFIGURATION_ID" \
|
|
57
|
+
--filter tags=smoke \
|
|
58
|
+
--testrun-name "CI smoke")
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
From a test plan:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
testit testrun create launch \
|
|
65
|
+
-u "$TMS_URL" -t "$TMS_TOKEN" \
|
|
66
|
+
-pi "$TMS_PROJECT_ID" -ci "$TMS_CONFIGURATION_ID" \
|
|
67
|
+
--test-plan-id "$TMS_TEST_PLAN_ID" \
|
|
68
|
+
-o ./testrun.id
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Autotest external IDs file
|
|
72
|
+
|
|
73
|
+
`--autotest-external-ids-file` / `-af` expects a plain-text file of **autotest external IDs** (the same values as in TMS / `autoTestExternalIds`, not internal UUIDs or global IDs):
|
|
74
|
+
|
|
75
|
+
- one external ID per line;
|
|
76
|
+
- empty lines are ignored;
|
|
77
|
+
- lines starting with `#` are comments;
|
|
78
|
+
- duplicate IDs are ignored.
|
|
79
|
+
|
|
80
|
+
Example `autotest-external-ids.txt`:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
# smoke suite
|
|
84
|
+
login-test-ext-id
|
|
85
|
+
checkout-test-ext-id
|
|
86
|
+
|
|
87
|
+
payment-test-ext-id
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
testit testrun create launch \
|
|
92
|
+
-u "$TMS_URL" -t "$TMS_TOKEN" \
|
|
93
|
+
-pi "$TMS_PROJECT_ID" -ci "$TMS_CONFIGURATION_ID" \
|
|
94
|
+
-af ./autotest-external-ids.txt
|
|
95
|
+
```
|
|
96
|
+
|
|
34
97
|
## Test run tags and links
|
|
35
98
|
|
|
36
99
|
You can attach **test run** tags and links (for example a CI job URL) via CLI flags or environment variables.
|
|
@@ -111,3 +174,31 @@ Notes:
|
|
|
111
174
|
- Test run tags/links are independent from autotest/result tags and links.
|
|
112
175
|
- On an existing run, new tags/links are **merged** (existing values are kept; duplicates by tag name / link URL are skipped).
|
|
113
176
|
- Empty or omitted values mean “do not change tags/links”.
|
|
177
|
+
|
|
178
|
+
## Autotest layer (test pyramid)
|
|
179
|
+
|
|
180
|
+
When importing XML results, CLI can set the **autotest** pyramid layer for every upserted autotest (create/update).
|
|
181
|
+
This is a **run-level default** for file-based import; adapters still read layer from test code annotations.
|
|
182
|
+
|
|
183
|
+
| Intent | CLI | Env |
|
|
184
|
+
|--------|-----|-----|
|
|
185
|
+
| Default autotest layer | `--autotest-layer` / `-al` | `TMS_AUTOTEST_LAYER` |
|
|
186
|
+
|
|
187
|
+
Supported commands: `results import`, `results upload`.
|
|
188
|
+
|
|
189
|
+
Recommended values: `E2E`, `UI`, `API`, `Contract`, `Integration`, `Component`, `Unit`. Any other non-empty string is accepted.
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
export TMS_AUTOTEST_LAYER=API
|
|
193
|
+
testit results import \
|
|
194
|
+
--url "$TMS_URL" \
|
|
195
|
+
--token "$TMS_TOKEN" \
|
|
196
|
+
--project-id "$TMS_PROJECT_ID" \
|
|
197
|
+
--configuration-id "$TMS_CONFIGURATION_ID" \
|
|
198
|
+
--results ./results
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Behaviour (aligned with adapters API):
|
|
202
|
+
|
|
203
|
+
- Layer set → send `layer: { name, source: Run }` on create/update.
|
|
204
|
+
- Layer not set → do not send `layer`; on update always send `resetLayer: false`.
|
|
@@ -90,9 +90,9 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
90
90
|
'is_enabled': (bool,), # noqa: E501
|
|
91
91
|
'is_required': (bool,), # noqa: E501
|
|
92
92
|
'is_global': (bool,), # noqa: E501
|
|
93
|
-
'is_read_only': (bool,
|
|
94
|
-
'is_system': (bool,
|
|
95
|
-
'targets': ([str],
|
|
93
|
+
'is_read_only': (bool,), # noqa: E501
|
|
94
|
+
'is_system': (bool,), # noqa: E501
|
|
95
|
+
'targets': ([str],), # noqa: E501
|
|
96
96
|
'code': (str, none_type,), # noqa: E501
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -123,7 +123,7 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
123
123
|
|
|
124
124
|
@classmethod
|
|
125
125
|
@convert_js_args_to_python_args
|
|
126
|
-
def _from_openapi_data(cls, id, options, type, is_deleted, name, is_enabled, is_required, is_global, *args, **kwargs): # noqa: E501
|
|
126
|
+
def _from_openapi_data(cls, id, options, type, is_deleted, name, is_enabled, is_required, is_global, is_read_only, is_system, targets, *args, **kwargs): # noqa: E501
|
|
127
127
|
"""CustomAttributeApiResult - a model defined in OpenAPI
|
|
128
128
|
|
|
129
129
|
Args:
|
|
@@ -135,11 +135,11 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
135
135
|
is_enabled (bool): Indicates if the attribute is enabled
|
|
136
136
|
is_required (bool): Indicates if the attribute value is mandatory to specify
|
|
137
137
|
is_global (bool): Indicates if the attribute is available across all projects
|
|
138
|
+
is_read_only (bool): Indicates if the attribute is read-only
|
|
139
|
+
is_system (bool): Indicates if the attribute is system
|
|
140
|
+
targets ([str]): Collection of the attribute targets Defines where the attribute can be used (e.g., TestCases, AutoTestCases, TestPlans)
|
|
138
141
|
|
|
139
142
|
Keyword Args:
|
|
140
|
-
is_read_only (bool): Indicates if the attribute is read-only. [optional] # noqa: E501
|
|
141
|
-
is_system (bool): Indicates if the attribute is system. [optional] # noqa: E501
|
|
142
|
-
targets ([str]): Collection of the attribute targets. [optional] # noqa: E501
|
|
143
143
|
_check_type (bool): if True, values for parameters in openapi_types
|
|
144
144
|
will be type checked and a TypeError will be
|
|
145
145
|
raised if the wrong type is input.
|
|
@@ -178,9 +178,6 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
178
178
|
_path_to_item = kwargs.pop('_path_to_item', ())
|
|
179
179
|
_configuration = kwargs.pop('_configuration', None)
|
|
180
180
|
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
|
|
181
|
-
is_read_only = kwargs.pop('is_read_only', False)
|
|
182
|
-
is_system = kwargs.pop('is_system', False)
|
|
183
|
-
targets = kwargs.pop('targets', None)
|
|
184
181
|
|
|
185
182
|
self = super(OpenApiModel, cls).__new__(cls)
|
|
186
183
|
|
|
@@ -236,7 +233,7 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
236
233
|
])
|
|
237
234
|
|
|
238
235
|
@convert_js_args_to_python_args
|
|
239
|
-
def __init__(self, id, options, type, is_deleted, name, is_enabled, is_required, is_global, *args, **kwargs): # noqa: E501
|
|
236
|
+
def __init__(self, id, options, type, is_deleted, name, is_enabled, is_required, is_global, is_read_only, is_system, targets, *args, **kwargs): # noqa: E501
|
|
240
237
|
"""CustomAttributeApiResult - a model defined in OpenAPI
|
|
241
238
|
|
|
242
239
|
Args:
|
|
@@ -248,11 +245,11 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
248
245
|
is_enabled (bool): Indicates if the attribute is enabled
|
|
249
246
|
is_required (bool): Indicates if the attribute value is mandatory to specify
|
|
250
247
|
is_global (bool): Indicates if the attribute is available across all projects
|
|
248
|
+
is_read_only (bool): Indicates if the attribute is read-only
|
|
249
|
+
is_system (bool): Indicates if the attribute is system
|
|
250
|
+
targets ([str]): Collection of the attribute targets Defines where the attribute can be used (e.g., TestCases, AutoTestCases, TestPlans)
|
|
251
251
|
|
|
252
252
|
Keyword Args:
|
|
253
|
-
is_read_only (bool): Indicates if the attribute is read-only. [optional] # noqa: E501
|
|
254
|
-
is_system (bool): Indicates if the attribute is system. [optional] # noqa: E501
|
|
255
|
-
targets ([str]): Collection of the attribute targets. [optional] # noqa: E501
|
|
256
253
|
_check_type (bool): if True, values for parameters in openapi_types
|
|
257
254
|
will be type checked and a TypeError will be
|
|
258
255
|
raised if the wrong type is input.
|
|
@@ -291,9 +288,6 @@ class CustomAttributeApiResult(ModelNormal):
|
|
|
291
288
|
_path_to_item = kwargs.pop('_path_to_item', ())
|
|
292
289
|
_configuration = kwargs.pop('_configuration', None)
|
|
293
290
|
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
|
|
294
|
-
is_read_only = kwargs.pop('is_read_only', False)
|
|
295
|
-
is_system = kwargs.pop('is_system', False)
|
|
296
|
-
targets = kwargs.pop('targets', None)
|
|
297
291
|
|
|
298
292
|
if args:
|
|
299
293
|
for arg in args:
|
{testit_cli-2.10.3 → testit_cli-2.10.4.post600}/src/testit_cli/adapters_api/model/layer_source.py
RENAMED
|
@@ -53,6 +53,7 @@ class LayerSource(ModelSimple):
|
|
|
53
53
|
allowed_values = {
|
|
54
54
|
('value',): {
|
|
55
55
|
'MANUAL': "Manual",
|
|
56
|
+
'REPORT': "Report",
|
|
56
57
|
'RUN': "Run",
|
|
57
58
|
'RULE': "Rule",
|
|
58
59
|
},
|
|
@@ -106,10 +107,10 @@ class LayerSource(ModelSimple):
|
|
|
106
107
|
Note that value can be passed either in args or in kwargs, but not in both.
|
|
107
108
|
|
|
108
109
|
Args:
|
|
109
|
-
args[0] (str):, must be one of ["Manual", "Run", "Rule", ] # noqa: E501
|
|
110
|
+
args[0] (str):, must be one of ["Manual", "Report", "Run", "Rule", ] # noqa: E501
|
|
110
111
|
|
|
111
112
|
Keyword Args:
|
|
112
|
-
value (str):, must be one of ["Manual", "Run", "Rule", ] # noqa: E501
|
|
113
|
+
value (str):, must be one of ["Manual", "Report", "Run", "Rule", ] # noqa: E501
|
|
113
114
|
_check_type (bool): if True, values for parameters in openapi_types
|
|
114
115
|
will be type checked and a TypeError will be
|
|
115
116
|
raised if the wrong type is input.
|
|
@@ -200,10 +201,10 @@ class LayerSource(ModelSimple):
|
|
|
200
201
|
Note that value can be passed either in args or in kwargs, but not in both.
|
|
201
202
|
|
|
202
203
|
Args:
|
|
203
|
-
args[0] (str):, must be one of ["Manual", "Run", "Rule", ] # noqa: E501
|
|
204
|
+
args[0] (str):, must be one of ["Manual", "Report", "Run", "Rule", ] # noqa: E501
|
|
204
205
|
|
|
205
206
|
Keyword Args:
|
|
206
|
-
value (str):, must be one of ["Manual", "Run", "Rule", ] # noqa: E501
|
|
207
|
+
value (str):, must be one of ["Manual", "Report", "Run", "Rule", ] # noqa: E501
|
|
207
208
|
_check_type (bool): if True, values for parameters in openapi_types
|
|
208
209
|
will be type checked and a TypeError will be
|
|
209
210
|
raised if the wrong type is input.
|
|
@@ -212,6 +212,7 @@ class ApiClient:
|
|
|
212
212
|
def update_autotest(self, model: AdaptersAutoTestsPutRequest) -> None:
|
|
213
213
|
"""Function updates autotest"""
|
|
214
214
|
try:
|
|
215
|
+
model.reset_layer = False
|
|
215
216
|
escaped_model: AdaptersAutoTestsPutRequest = HtmlEscapeUtils.escape_html_in_object(model)
|
|
216
217
|
|
|
217
218
|
logging.debug(f"Updating autotest {escaped_model}")
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import typing
|
|
1
2
|
from itertools import chain
|
|
2
3
|
|
|
3
4
|
import click
|
|
4
5
|
|
|
6
|
+
from .launch_filter import LaunchFilterError, parse_launch_filter, read_autotest_external_ids_file
|
|
5
7
|
from .models.config import Config
|
|
6
8
|
from .service_factory import ServiceFactory
|
|
7
9
|
from .testrun_metadata import parse_testrun_links, parse_testrun_tags
|
|
8
|
-
from .validation import validate_url, validate_uuid
|
|
10
|
+
from .validation import validate_url, validate_url_optional, validate_uuid
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
@click.group()
|
|
@@ -71,6 +73,16 @@ _TESTRUN_LINKS_HELP = (
|
|
|
71
73
|
'([{"url":"https://ci.example/jobs/1","title":"CI Job","type":"Related"}]). '
|
|
72
74
|
"Types: Related, BlockedBy, Defect, Issue, Requirement, Repository"
|
|
73
75
|
)
|
|
76
|
+
_AUTOTEST_LAYER_HELP = (
|
|
77
|
+
"Default autotest pyramid layer for all imported tests "
|
|
78
|
+
"(E2E, UI, API, Contract, Integration, Component, Unit, or any string)"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _parse_autotest_layer(raw: typing.Optional[str]) -> typing.Optional[str]:
|
|
83
|
+
if raw is None or not str(raw).strip():
|
|
84
|
+
return None
|
|
85
|
+
return str(raw).strip()
|
|
74
86
|
|
|
75
87
|
|
|
76
88
|
@results.command("upload")
|
|
@@ -88,7 +100,8 @@ _TESTRUN_LINKS_HELP = (
|
|
|
88
100
|
@click.option("-d", "--debug", is_flag=True, help="Set debug logs")
|
|
89
101
|
@click.option("-dcv", "--disable-cert-validation", is_flag=True, help="Disables certificate validation")
|
|
90
102
|
@click.option("-iff", "--ignore-flaky-failure", is_flag=True, help="Ignore status flakyFailure in results")
|
|
91
|
-
|
|
103
|
+
@click.option("-al", "--autotest-layer", type=str, envvar='TMS_AUTOTEST_LAYER', default=None, help=_AUTOTEST_LAYER_HELP)
|
|
104
|
+
def upload_results(url, token, configuration_id, testrun_id, testruntags, testrunlinks, separator, namespace, classname, results, debug, attachments, disable_cert_validation, ignore_flaky_failure, autotest_layer):
|
|
92
105
|
"""Uploading results from different streams"""
|
|
93
106
|
config = Config(
|
|
94
107
|
url=url,
|
|
@@ -105,6 +118,7 @@ def upload_results(url, token, configuration_id, testrun_id, testruntags, testru
|
|
|
105
118
|
paths_to_attachments=list(chain.from_iterable(attachments)),
|
|
106
119
|
disable_cert_validation=disable_cert_validation,
|
|
107
120
|
ignore_flaky_failure=ignore_flaky_failure,
|
|
121
|
+
autotest_layer=_parse_autotest_layer(autotest_layer),
|
|
108
122
|
)
|
|
109
123
|
service = ServiceFactory().get(config)
|
|
110
124
|
|
|
@@ -128,8 +142,9 @@ def upload_results(url, token, configuration_id, testrun_id, testruntags, testru
|
|
|
128
142
|
@click.option("-d", "--debug", is_flag=True, help="Set debug logs")
|
|
129
143
|
@click.option("-dcv", "--disable-cert-validation", is_flag=True, help="Disables certificate validation")
|
|
130
144
|
@click.option("-iff", "--ignore-flaky-failure", is_flag=True, help="Ignore status flakyFailure in results")
|
|
145
|
+
@click.option("-al", "--autotest-layer", type=str, envvar='TMS_AUTOTEST_LAYER', default=None, help=_AUTOTEST_LAYER_HELP)
|
|
131
146
|
def import_results(url, token, project_id, configuration_id, testrun_id, testrun_name, testruntags, testrunlinks, separator, namespace, classname, results, debug,
|
|
132
|
-
attachments, disable_cert_validation, ignore_flaky_failure):
|
|
147
|
+
attachments, disable_cert_validation, ignore_flaky_failure, autotest_layer):
|
|
133
148
|
"""Uploading the first test results"""
|
|
134
149
|
if testrun_id is not None and testrun_name is not None:
|
|
135
150
|
click.echo("Illegal usage: `{}` are mutually exclusive arguments.".format(', '.join(["--testrun-id", "--testrun-name"])), err=True)
|
|
@@ -151,6 +166,7 @@ def import_results(url, token, project_id, configuration_id, testrun_id, testrun
|
|
|
151
166
|
paths_to_attachments=list(chain.from_iterable(attachments)),
|
|
152
167
|
disable_cert_validation=disable_cert_validation,
|
|
153
168
|
ignore_flaky_failure=ignore_flaky_failure,
|
|
169
|
+
autotest_layer=_parse_autotest_layer(autotest_layer),
|
|
154
170
|
)
|
|
155
171
|
service = ServiceFactory().get(config)
|
|
156
172
|
|
|
@@ -163,19 +179,71 @@ def testrun():
|
|
|
163
179
|
pass
|
|
164
180
|
|
|
165
181
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
182
|
+
def _require_create_options(**required_options):
|
|
183
|
+
"""Validate empty-create required options when no subcommand is invoked."""
|
|
184
|
+
for flag, value in required_options.items():
|
|
185
|
+
if value is None or value == "":
|
|
186
|
+
raise click.UsageError(f"Missing option '{flag}'.")
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def _require_exactly_one_launch_source(
|
|
190
|
+
test_plan_id: typing.Optional[str],
|
|
191
|
+
launch_filter: typing.Optional[str],
|
|
192
|
+
autotest_external_ids_file: typing.Optional[str],
|
|
193
|
+
) -> None:
|
|
194
|
+
sources = [
|
|
195
|
+
bool(test_plan_id),
|
|
196
|
+
bool(launch_filter),
|
|
197
|
+
bool(autotest_external_ids_file),
|
|
198
|
+
]
|
|
199
|
+
if sum(sources) != 1:
|
|
200
|
+
raise click.UsageError(
|
|
201
|
+
"Provide exactly one of: --test-plan-id, --filter, or --autotest-external-ids-file"
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def _parse_launch_tags(launch_filter: typing.Optional[str]) -> typing.Optional[typing.List[str]]:
|
|
206
|
+
if not launch_filter:
|
|
207
|
+
return None
|
|
208
|
+
try:
|
|
209
|
+
return parse_launch_filter(launch_filter)
|
|
210
|
+
except LaunchFilterError as exc:
|
|
211
|
+
raise click.BadParameter(str(exc), param_hint="--filter") from exc
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _load_autotest_external_ids(path: typing.Optional[str]) -> typing.Optional[typing.List[str]]:
|
|
215
|
+
if not path:
|
|
216
|
+
return None
|
|
217
|
+
autotest_external_ids = read_autotest_external_ids_file(path)
|
|
218
|
+
if not autotest_external_ids:
|
|
219
|
+
raise click.BadParameter(
|
|
220
|
+
"Autotest external ids file is empty (no external IDs)",
|
|
221
|
+
param_hint="--autotest-external-ids-file",
|
|
222
|
+
)
|
|
223
|
+
return autotest_external_ids
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
@testrun.group("create", invoke_without_command=True)
|
|
227
|
+
@click.pass_context
|
|
228
|
+
@click.option("-u", "--url", type=str, envvar='TMS_URL', default=None, help="Set url address of the Test IT instance (https://demo.testit.software)", callback=validate_url_optional)
|
|
229
|
+
@click.option("-t", "--token", type=str, envvar='TMS_TOKEN', default=None, help="Set API token (T2lKd2pLZGI4WHRhaVZUejNl)")
|
|
230
|
+
@click.option("-pi", "--project-id", type=str, envvar='TMS_PROJECT_ID', default=None, help="Set project id (5236eb3f-7c05-46f9-a609-dc0278896464)", callback=validate_uuid)
|
|
231
|
+
@click.option("-tn", "--testrun-name", type=str, envvar='TMS_TEST_RUN_NAME', default=None, help="Set test run name (TestRun01)")
|
|
171
232
|
@click.option("-trt", "--testruntags", type=str, envvar='TMS_TEST_RUN_TAGS', default=None, help=_TESTRUN_TAGS_HELP)
|
|
172
233
|
@click.option("-trl", "--testrunlinks", type=str, envvar='TMS_TEST_RUN_LINKS', default=None, help=_TESTRUN_LINKS_HELP)
|
|
173
|
-
@click.option("-o", "--output", type=str,
|
|
234
|
+
@click.option("-o", "--output", type=str, default=None, help="Set file path for output (FILE)")
|
|
174
235
|
@click.option("-a", "--attachments", multiple=True, type=list, help="Path to attachments for test run (multiple)", default=[], cls=ExtraArgsForOption)
|
|
175
236
|
@click.option("-d", "--debug", is_flag=True, help="Set debug logs")
|
|
176
237
|
@click.option("-dcv", "--disable-cert-validation", is_flag=True, help="Disables certificate validation")
|
|
177
|
-
def create_test_run(url, token, project_id, testrun_name, testruntags, testrunlinks, output, debug, attachments, disable_cert_validation):
|
|
238
|
+
def create_test_run(ctx, url, token, project_id, testrun_name, testruntags, testrunlinks, output, debug, attachments, disable_cert_validation):
|
|
178
239
|
"""Creating a new test run"""
|
|
240
|
+
if ctx.invoked_subcommand is not None:
|
|
241
|
+
return
|
|
242
|
+
|
|
243
|
+
_require_create_options(
|
|
244
|
+
**{"--url": url, "--token": token, "--project-id": project_id, "--output": output}
|
|
245
|
+
)
|
|
246
|
+
|
|
179
247
|
config = Config(
|
|
180
248
|
url=url,
|
|
181
249
|
token=token,
|
|
@@ -193,6 +261,41 @@ def create_test_run(url, token, project_id, testrun_name, testruntags, testrunli
|
|
|
193
261
|
service.create_test_run()
|
|
194
262
|
|
|
195
263
|
|
|
264
|
+
@create_test_run.command("launch")
|
|
265
|
+
@click.option("-u", "--url", type=str, envvar='TMS_URL', required=True, help="Set url address of the Test IT instance (https://demo.testit.software)", callback=validate_url)
|
|
266
|
+
@click.option("-t", "--token", type=str, envvar='TMS_TOKEN', required=True, help="Set API token (T2lKd2pLZGI4WHRhaVZUejNl)")
|
|
267
|
+
@click.option("-pi", "--project-id", type=str, envvar='TMS_PROJECT_ID', required=True, help="Set project id (5236eb3f-7c05-46f9-a609-dc0278896464)", callback=validate_uuid)
|
|
268
|
+
@click.option("-ci", "--configuration-id", type=str, envvar='TMS_CONFIGURATION_ID', required=True, help="Set configuration id (15dbb164-c1aa-4cbf-830c-8c01ae14f4fb)", callback=validate_uuid)
|
|
269
|
+
@click.option("-tpi", "--test-plan-id", type=str, envvar='TMS_TEST_PLAN_ID', default=None, help="Create run from test plan (UUID)", callback=validate_uuid)
|
|
270
|
+
@click.option("-f", "--filter", "launch_filter", type=str, default=None, help="TMS filter, e.g. tags=smoke,nightly")
|
|
271
|
+
@click.option("-af", "--autotest-external-ids-file", type=click.Path(exists=True, dir_okay=False, readable=True), default=None, help="File with autotest external IDs (one per line)")
|
|
272
|
+
@click.option("-tn", "--testrun-name", type=str, envvar='TMS_TEST_RUN_NAME', help="Set test run name (TestRun01)", default=None)
|
|
273
|
+
@click.option("-o", "--output", type=str, default=None, help="Optional file path to write test run id")
|
|
274
|
+
@click.option("-d", "--debug", is_flag=True, help="Set debug logs")
|
|
275
|
+
@click.option("-dcv", "--disable-cert-validation", is_flag=True, help="Disables certificate validation")
|
|
276
|
+
def create_launch(url, token, project_id, configuration_id, test_plan_id, launch_filter, autotest_external_ids_file, testrun_name, output, debug, disable_cert_validation):
|
|
277
|
+
"""Create and fill a test run (by plan, tags, or external IDs)"""
|
|
278
|
+
_require_exactly_one_launch_source(test_plan_id, launch_filter, autotest_external_ids_file)
|
|
279
|
+
launch_tags = _parse_launch_tags(launch_filter)
|
|
280
|
+
autotest_external_ids = _load_autotest_external_ids(autotest_external_ids_file)
|
|
281
|
+
|
|
282
|
+
config = Config(
|
|
283
|
+
url=url,
|
|
284
|
+
token=token,
|
|
285
|
+
project_id=project_id,
|
|
286
|
+
configuration_id=configuration_id,
|
|
287
|
+
test_plan_id=test_plan_id,
|
|
288
|
+
launch_tags=launch_tags,
|
|
289
|
+
autotest_external_ids=autotest_external_ids,
|
|
290
|
+
testrun_name=testrun_name,
|
|
291
|
+
is_debug=debug,
|
|
292
|
+
output=output or "",
|
|
293
|
+
disable_cert_validation=disable_cert_validation,
|
|
294
|
+
)
|
|
295
|
+
service = ServiceFactory().get(config)
|
|
296
|
+
service.launch_test_run()
|
|
297
|
+
|
|
298
|
+
|
|
196
299
|
@testrun.command("complete")
|
|
197
300
|
@click.option("-u", "--url", type=str, envvar='TMS_URL', required=True, help="Set url address of the Test IT instance (https://demo.testit.software)", callback=validate_url)
|
|
198
301
|
@click.option("-t", "--token", type=str, envvar='TMS_TOKEN', required=True, help="Set API token (T2lKd2pLZGI4WHRhaVZUejNl)")
|
|
@@ -282,7 +385,7 @@ def rerun_test_run(url, token, testrun_id, configuration_id, status_code, failur
|
|
|
282
385
|
|
|
283
386
|
|
|
284
387
|
PYTHON_FRAMEWORKS = ['pytest', 'robotframework', 'behave', 'nose']
|
|
285
|
-
JAVA_FRAMEWORKS = ['gradle-testng', 'gradle-junit5', 'gradle-junit4', 'gradle-cucumber', 'maven-testng', 'maven-junit5', 'maven-junit4', 'maven-cucumber']
|
|
388
|
+
JAVA_FRAMEWORKS = ['gradle-testng', 'gradle-junit6', 'gradle-junit5', 'gradle-junit4', 'gradle-cucumber', 'maven-testng', 'maven-junit6', 'maven-junit5', 'maven-junit4', 'maven-cucumber']
|
|
286
389
|
KOTLIN_FRAMEWORKS = ['kotest']
|
|
287
390
|
JAVASCRIPT_FRAMEWORKS = ['cucumberjs', 'codeceptjs', 'jest', 'mocha', 'playwright', 'testcafe', 'cypress']
|
|
288
391
|
DOTNET_FRAMEWORKS = ['mstest', 'nunit', 'xunit', 'specflow']
|
|
@@ -9,9 +9,11 @@ from adapters_api.model.assign_attachment_api_model import AssignAttachmentApiMo
|
|
|
9
9
|
from adapters_api.model.attachment_api_result import AttachmentApiResult
|
|
10
10
|
from adapters_api.model.attachment_put_model import AttachmentPutModel
|
|
11
11
|
from adapters_api.model.auto_test_api_result import AutoTestApiResult
|
|
12
|
+
from adapters_api.model.auto_test_create_api_model_layer import AutoTestCreateApiModelLayer
|
|
12
13
|
from adapters_api.model.auto_test_results_for_test_run_model import AutoTestResultsForTestRunModel
|
|
13
14
|
from adapters_api.model.auto_test_search_api_model_filter import AutoTestSearchApiModelFilter
|
|
14
15
|
from adapters_api.model.auto_test_search_api_model_includes import AutoTestSearchApiModelIncludes
|
|
16
|
+
from adapters_api.model.layer_source import LayerSource
|
|
15
17
|
from adapters_api.model.link_api_result import LinkApiResult
|
|
16
18
|
from adapters_api.model.test_result_short_response import TestResultShortResponse
|
|
17
19
|
from adapters_api.model.test_run_api_result import TestRunApiResult
|
|
@@ -23,6 +25,15 @@ from .models.testrun import TestRun
|
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
class Converter:
|
|
28
|
+
@staticmethod
|
|
29
|
+
def layer_to_api_model(layer_name: typing.Optional[str]) -> typing.Optional[AutoTestCreateApiModelLayer]:
|
|
30
|
+
if layer_name is None or not str(layer_name).strip():
|
|
31
|
+
return None
|
|
32
|
+
return AutoTestCreateApiModelLayer(
|
|
33
|
+
name=str(layer_name).strip(),
|
|
34
|
+
source=LayerSource("Run"),
|
|
35
|
+
)
|
|
36
|
+
|
|
26
37
|
@staticmethod
|
|
27
38
|
def project_id_and_external_id_to_autotests_search_post_request(
|
|
28
39
|
project_id: str, external_id: str) -> AdaptersAutoTestsSearchPostRequest:
|
|
@@ -85,26 +96,41 @@ class Converter:
|
|
|
85
96
|
|
|
86
97
|
@staticmethod
|
|
87
98
|
def test_result_to_create_autotest_request(
|
|
88
|
-
result: TestCase,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
99
|
+
result: TestCase,
|
|
100
|
+
external_id: str,
|
|
101
|
+
project_id: str,
|
|
102
|
+
layer: typing.Optional[str] = None) -> AdaptersAutoTestsPostRequest:
|
|
103
|
+
request_kwargs = {
|
|
104
|
+
"external_id": external_id,
|
|
105
|
+
"project_id": project_id,
|
|
106
|
+
"name": result.get_name(),
|
|
107
|
+
"namespace": result.get_name_space(),
|
|
108
|
+
"classname": result.get_class_name(),
|
|
109
|
+
}
|
|
110
|
+
api_layer = Converter.layer_to_api_model(layer)
|
|
111
|
+
if api_layer is not None:
|
|
112
|
+
request_kwargs["layer"] = api_layer
|
|
113
|
+
return AdaptersAutoTestsPostRequest(**request_kwargs)
|
|
96
114
|
|
|
97
115
|
@staticmethod
|
|
98
116
|
def test_result_to_update_autotest_request(
|
|
99
|
-
result: TestCase,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
result: TestCase,
|
|
118
|
+
external_id: str,
|
|
119
|
+
project_id: str,
|
|
120
|
+
layer: typing.Optional[str] = None) -> AdaptersAutoTestsPutRequest:
|
|
121
|
+
request_kwargs = {
|
|
122
|
+
"external_id": external_id,
|
|
123
|
+
"project_id": project_id,
|
|
124
|
+
"name": result.get_name(),
|
|
125
|
+
"namespace": result.get_name_space(),
|
|
126
|
+
"classname": result.get_class_name(),
|
|
127
|
+
"is_flaky": result.get_is_flaky(),
|
|
128
|
+
"reset_layer": False,
|
|
129
|
+
}
|
|
130
|
+
api_layer = Converter.layer_to_api_model(layer)
|
|
131
|
+
if api_layer is not None:
|
|
132
|
+
request_kwargs["layer"] = api_layer
|
|
133
|
+
return AdaptersAutoTestsPutRequest(**request_kwargs)
|
|
108
134
|
|
|
109
135
|
@staticmethod
|
|
110
136
|
def test_result_to_testrun_result_post_model(
|