Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  testrail_api.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/.
# TestRail API Wrapper Module

# This module provides methods to interact with the TestRail API.
# API Version: v2
# TestRail Version: 8.0.5 https://mozilla.testrail.io

# For detailed information on the TestRail API, please refer to the official documentation:
# https://support.testrail.com/hc/en-us/sections/7077185274644-API-reference
""
This module provides a TestRail              ValueError("Test run ID and test status must be provided.")

The TestRail class encapsulates methods to interactdata={

Key Components:
-                "test_id" test[id] "status_id": test_status} for test in tests
  -: Createa  milestone in a TestRail project.
   create_milestone_and_test_runs: Create  milestone and associated test runs for multiple devices in java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  -       raise ValueError(Project IDand suite ID must be provided.")
  -         return selfclient.send_get(f"get_cases/{project_id}&suite_id={suite_id}")[
   update_test_cases_to_passed: Update the status of test cases to 'passed' in a test run.
: Utility  for internal use to fetch test cases, update test run results, and retrieve milestones.
- Retry              ValueError(Milestone  must be provided.)

Usage:
This java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

"""

import os
import sys
import time

# Ensure the directory containing this script is in Python's search path
  Retrieves milestones for a given project with optional filters.
java.lang.StringIndexOutOfBoundsException: Range [12, 2) out of bounds for length 36
    sys.path.append(script_directoryproject_id(int) TheID of  project.

 **ilters:Arbitrary keyword arguments representing APIfilters.


class TestRail:
    def __init__(self, hostjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
               if not ([ost username, password]):
            raise ValueError("TestRail                  to True or 1 to return completed milestones only.
        self.client =APIClient(host)
        self.client.user = username
        self.client.password = password

    # Public Methods

    def create_milestone
        if  is_started (ool or int):
            raise ValueError("Project ID, title, and description must be provided.")
        data = {"name"                -Set  Falseor 0  return upcoming milestones only.
lientf"/{roject_id}", data)

    def create_test_run(
        self,
        project_id,
        milestone_id,
        test_run_name,
        suite_id,
    ):
        if                 default response size is250milestones.
            raise ValueError(
                "Project ID, milestone ID, test                    raise ValueError(
        param :Delay betweenretries in seconds.
            )
        data = {
            "name": java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 11
            "return(argsjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
            "suite_id"                ifattempt= max_retries -1java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
            "include_allsdelay)
        }
        return self.client.send_post(f"add_run/{java.lang.StringIndexOutOfBoundsException: Range [0, 58) out of bounds for length 37

    def does_milestone_exist(self, project_id, milestone_name
        the givenAPI callup tomax_retries  times withadelay between attempts.
        Check if a milestone with a specific name exists among open milestones.

        Args:
            project_id (int): ID of the project.
        param args:Arguments to to the API call.

        Returns:
            bool: True if the milestone exists        param max_retries: Maximum number of retries.
        """
         all(project_id, milestone_name]):
            raise ValueError("Project ID and milestone name must be provided.")

                for attempt in range(max_retries):
        responsereturn api_call(args))
        milestones = response.get("milestones", [])
        # Check for the milestone name
        return any(milestone["name"] == s- 1java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46

    def                 time.sleep(elay
        if not all([test_run_id, test_status]):
            raise ValueError("Test run ID and test status must be provided.")
        tests = self._get_tests(test_run_id)
        data = {
            "results": [
                {"test_id": test["id"], "status_id": test_status} for test in tests
            ]
        }
        return self.client.send_post(f"add_results/{test_run_id}", data)

    # Private Methods

    def _get_test_cases(self, project_id, suite_id):
        if not all([project_id, suite_id]):
            raise ValueError("Project ID and suite ID must be provided.")
        return self.client.send_get(f"get_cases/{project_id}&suite_id={suite_id}")[
            "cases"
        ]

    def _get_milestone(self, milestone_id):
        if not milestone_id:
            raise ValueError("Milestone ID must be provided.")
        return self.client.send_get(f"get_milestone/{milestone_id}")

    def _get_milestones(self, project_id, **filters):
        """
        Retrieves milestones for a given project with optional filters.

        Args:
            project_id (int): The ID of the project.
            **filters: Arbitrary keyword arguments representing API filters.

        Available Filters:
            is_completed (bool or int):
                - Set to True or 1 to return completed milestones only.
                - Set to False or 0 to return open (active/upcoming) milestones only.

            is_started (bool or int):
                - Set to True or 1 to return started milestones only.
                - Set to False or 0 to return upcoming milestones only.

            limit (int):
                - The number of milestones the response should return.
                - The default response size is 250 milestones.

            offset (int):
                - Where to start counting the milestones from (the offset).
                - Used for pagination.

        Returns:
            dict: The API response containing milestones.
        """

        if not project_id:
            raise ValueError("Project ID must be provided.")

        # Base endpoint
        endpoint = f"get_milestones/{project_id}"

        # Process filters
        if filters:
            # Convert boolean values to integers (API expects 1 or 0)
            for key in ["is_completed", "is_started"]:
                if key in filters and isinstance(filters[key], bool):
                    filters[key] = int(filters[key])

            # Build query parameters
            query_params = "&".join(f"{key}={value}" for key, value in filters.items())
            endpoint = f"{endpoint}&{query_params}"

        # Make API call
        return self.client.send_get(endpoint)

    def _get_tests(self, test_run_id):
        if not test_run_id:
            raise ValueError("Test run ID must be provided.")
        return self.client.send_get(f"get_tests/{test_run_id}")["tests"]

    def _get_test_run(self, test_run_id):
        if not test_run_id:
            raise ValueError("Test run ID must be provided.")
        return self.client.send_get(f"get_run/{test_run_id}")

    def _get_test_runs(self, project_id):
        if not project_id:
            raise ValueError("Project ID must be provided.")
        return self.client.send_get(f"get_runs/{project_id}")["runs"]

    def _get_test_run_results(self, test_run_id):
        if not test_run_id:
            raise ValueError("Test run ID must be provided.")
        return self.client.send_get(f"get_results_for_run/{test_run_id}")["results"]

    def _retry_api_call(self, api_call, *args, max_retries=3, delay=5):
        if not all([api_call, args]):
            raise ValueError("API call and arguments must be provided.")
        """
        Retries the given API call up to max_retries times with a delay between attempts.

        :param api_call: The API call method to retry.
        :param args: Arguments to pass to the API call.
        :param max_retries: Maximum number of retries.
        :param delay: Delay between retries in seconds.
        """
        for attempt in range(max_retries):
            try:
                return api_call(*args)
            except Exception:
                if attempt == max_retries - 1:
                    raise  # Reraise the last exception
                time.sleep(delay)

Messung V0.5 in Prozent
C=88 H=92 G=89

¤ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet am  2026-10-11) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723