Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/taskcluster/scripts/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  testrail_main.py   Sprache: Python

 
#!/usr/bin/env python3

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
"""
This Python script automates creating milestones and test runs in TestRail and updating
test cases based on the results of automated smoke tests for different product releases.

Functionality includes:
- Reading TestRail credentials and environment variables.
- Building milestone names and descriptions.
- Interacting with the TestRail API to create milestones, test runs, and update test cases.
- Sending notifications to a specified Slack channel.
"""

import os
import sys

from lib.testrail_api import TestRail
from lib.testrail_utils import (
    build_milestone_description,
    build_milestone_name,
    get_release_type,
    get_release_version,
    load_testrail_credentials,
)
from slack_notifier import (
    get_product_icon,
    get_taskcluster_options,
    send_error_notification,
    send_success_notification,
)

# Constants
SUCCESS_CHANNEL_ID = "C07HUFVU2UD"  # mobile-testeng-releases
ERROR_CHANNEL_ID = "C0134KJ4JHL"  # mobile-alerts-android


def main():
    # Load TestRail credentials
    credentials = load_testrail_credentials(".testrail_credentials.json")
    testrail = TestRail(
        credentials["host"], credentials["username"], credentials["password"]
    )

    # Read task environment variables
    try:
        shipping_product = os.environ["SHIPPING_PRODUCT"]
        testrail_product_type = os.environ["TESTRAIL_PRODUCT_TYPE"]
        testrail_project_id = os.environ["TESTRAIL_PROJECT_ID"]
        testrail_test_suite_id = os.environ["TESTRAIL_TEST_SUITE_ID"]
    except KeyError as e:
        raise ValueError(f"ERROR: Missing Environment Variable: {e}")

    # Release information
    release_version = get_release_version()
    release_type = get_release_type(release_version)

    # Build milestone information
    milestone_name = build_milestone_name(
        testrail_product_type, release_type, release_version
    )
    milestone_description = build_milestone_description(milestone_name)

    # Configure Taskcluster API
    options = get_taskcluster_options()

    try:
        # Check if milestone exists
        if testrail.does_milestone_exist(testrail_project_id, milestone_name):
            print(f"Milestone for {milestone_name} already exists. Exiting script...")
            sys.exit()

        # Create milestone and test runs
        devices = ["Google Pixel 3(Android11)""Google Pixel 2(Android11)"]
        milestone = testrail.create_milestone(
            testrail_project_id, milestone_name, milestone_description
        )

        for device in devices:
            test_run = testrail.create_test_run(
                testrail_project_id, milestone["id"], device, testrail_test_suite_id
            )
            testrail.update_test_run_tests(test_run["id"], 1)  # 1 = Passed

        product_icon = get_product_icon(shipping_product)

        # Send success notification
        success_values = {
            "RELEASE_TYPE": release_type,
            "RELEASE_VERSION": release_version,
            "SHIPPING_PRODUCT": shipping_product,
            "TESTRAIL_PROJECT_ID": testrail_project_id,
            "TESTRAIL_PRODUCT_TYPE": testrail_product_type,
            "PRODUCT_ICON": product_icon,
        }
        send_success_notification(success_values, SUCCESS_CHANNEL_ID, options)

    except Exception as error_message:
        send_error_notification(str(error_message), ERROR_CHANNEL_ID, options)


if __name__ == "__main__":
    main()

86%


¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.