Sur elle est la sur-lame sur BDD: évolutive, configurable, facile à utiliser, basée sur Flask Admin et Pydontic.

Vous pouvez installer sur elle via PIP à partir de PYPI:
pip install overhaveL'interface Web est un outil de base pour la gestion des fonctionnalités BDD. Il se compose de:
Info - Page d'index avec des informations facultatives sur votre outil ou projet;
Caractéristiques, essais, versions et balises:
Donne une interface pour la gestion des enregistrements des fonctionnalités et fournit des informations sur l'ID, le nom d'auteur, le temps, l'éditeur et l'état de publication; Il est possible de rechercher, modifier ou supprimer les éléments via le panneau de script.
Donne une interface pour la gestion des essais et fournit des informations sur.
Contient des versions de fonctionnalité en correspondant aux exécutions de test; Les versions contient des liens PR au référentiel git distant.
Contient des valeurs de balises, qui sont utilisées pour le marquage de la fonctionnalité.
Utilisateurs de test - Section pour afficher et configurer les utilisateurs de tests;
Groupes sous-sections;
(en développement).
Des fonctionnalités sur-riches peuvent être créées et / ou modifiées via un panneau de script spécial en mode d'édition de fonctionnalités. La fonctionnalité doit avoir le type enregistré par l'application, le nom unique, la liste des tâches spécifiées avec le format traditionnel `PRJ-NUMBER` et le texte de scénario.
Le panneau de script a la table des étapes pytest-bdd sur le côté droit de l'interface. Ces étapes doivent être définies dans les modules de luminaire appropriés et enregistrées sur l'application sur le démarrage à afficher.
Exemple de panneau de script surphave en mode d'édition de fonctionnalités
Overwave génère un rapport allure après l'exécution des tests dans une interface Web. Si vous exécutez des tests manuellement via PYTEST, ces résultats peuvent être convertis en rapport Allure également avec l'outil ALLURE CLI. Ce rapport contient des descriptions de scénarios telles qu'elles sont décrites dans les fonctionnalités.
Exemple de rapport d'allure généré après exécution de la fonctionnalité de sur-surnature
Overwave a un mode de démonstration spécial (en développement), qui pourrait être utilisé pour la démonstration du cadre et le débogage / test manuel. Le framework fournit des points d'entrée CLI pour un serveur facile exécuté en mode de débogage:
make up # start PostgreSQL database and Redis
overhave db create-all # create Overhave database schema
overhave-demo admin # start Overhave admin on port 8076 in debug mode
overhave-demo consumer -s test # start Overhave test execution consumerRemarque : vous pouvez exécuter l'administrateur en mode spécial, qui ne nécessite pas de consommateurs. Ce mode utilise Threadpool pour exécuter les tâches de test et de publication de manière asynchrone:
overhave-demo admin --threadpool --language=ruMais ce mode Threadpool est indésirable dans le paradigme de Kubernetes . Il est donc fortement recommandé d'utiliser exactement les consommateurs correspondants.
Overwave a une CLI qui fournit un moyen simple de démarrer l'interface Web de service, d'exécuter le consommateur et d'exécuter les opérations de base de base de données. Des exemples sont ci-dessous:
overhave db create-all
overhave admin --port 8080
overhave consumer -s publication
overhave api -p 8000 -w 4 Remarque : le start-up du service prend un ensemble de paramètres, vous pouvez donc les définir via un environnement virtuel avec le préfixe `OVERHAVE_` , par exemple` `OVERHAVE_DB_URL` . Si vous souhaitez configurer les paramètres de manière plus explicite à travers l'injection de contexte, veuillez consulter la partie suivante des documents.
Le service peut être configuré via l'injection de contexte d'application avec une instance préparée de l'objet OverhavEcontext. Ce contexte pourrait être défini à l'aide de la fonction `set_context` de l'instance initialisée` `ProxyFactory` .
Par exemple, `my_custom_context` a préparé. Ainsi, le démarrage de l'application pourrait être réalisé avec le code de suivi:
from overhave import overhave_app , overhave_admin_factory
factory = overhave_admin_factory ()
factory . set_context ( my_custom_context )
overhave_app ( factory ). run ( host = 'localhost' , port = 8080 , debug = True )Note :
`overhave_app` est l'application Flask préparée avec déjà activé`overhave_factory` est une fonction pour l'instance en cache LRU de la surplomb`ProxyFactory` ; L'instance a un accès aux composants d'application, directement utilisés dans `overhave_app` .`my_custom_context` est un exemple de configuration de contexte, voir unOverwave a une architecture productrice-consommation, basée sur des flux Redis et a pris en charge 3 types de consommateurs:
`overhave_test_execution_factory` ;`overhave_publication_factory` ;`overhave_emulation_factory` . Remarque : le `overhave_test_execution_factory` a la capacité d'injection de contexte et pourrait être enrichi avec le contexte personnalisé en tant que` `overhave_admin_factory` .
Surforme sur-lame de sa propre structure de projet spéciale:
La bonne approche consiste à créer un répertoire racine (comme "Demo" dans le référentiel actuel) qui contient des fonctionnalités , des luminaires et des répertoires d'étapes .
Le répertoire des fonctionnalités contient différents types de fonctionnalités en tant que répertoires distincts, chacun correspond à un ensemble prédéfini des étapes PyTest-BDD.
Le répertoire des luminaires contient des modules Pytest typiques divisés par différents types de fonctionnalités. Ces modules sont utilisés pour les essais isolés de PyTest-BDD. Il est nécessaire en raison du mécanisme spécial de la collection d'étapes Pytest-BDD.
Le répertoire des étapes contient également des packages de étapes PyTest-BDD divisés par différents types de fonctionnalités. Chaque sous-répertoire des étapes a ses propres étapes déclarées en fonction du type de fonctionnalité pris en charge.
Il est donc possible de créer votre propre structure horizontale de différentes directions de produit avec des étapes uniques et des luminaires Pytest.
Remarque : Cette structure est utilisée dans une application sur-lame . Les données formées donnent la possibilité de spécifier le type de fonctionnalité enregistré dans le panneau de script d' interface Web. De plus, cette structure définit les étapes qui seront affichées dans le côté droit du panneau de script .
Overwave a son propre format de texte de la fonctionnalité spéciale, qui hérite de Gherkin de PyTest-BDD avec des mises à jour uniques:
`@severity.blocker` );`PRJ-1234` ;Un exemple de contenu de fonctionnalité rempli est situé dans Feature_Example.RST.
Overwave implémente la solution pour l'utilisation des marqueurs Pytest avec des informations supplémentaires personnalisées:
Exemples:
@disabled(not ready)
Feature : My business feature @disabled(TODO: https://tracker.myorg.com/browse/PRJ-333; deadline 01.01.25)
Scenario : Yet another business feature @xfail(bug: https://tracker.myorg.com/browse/PRJ-555)
Scenario outline: Other business featureSi la raison contient une URL, donc la surplombera joindre le lien allure au rapport: pour les désactivés - il sera linkType.Link, pour xfail - linkType.issue.
Overwave a la capacité de définir des liens vers son propre service d'administration dans les cas de test allure. Le lien sera défini automatiquement lorsque vous générez un rapport Allure. Cette fonction peut être activée via la configuration de la variable d'environnement `OVERHAVE_ADMIN_URL` :
export OVERHAVE_ADMIN_URL=https://overhave-admin.myorg.com De plus, OverHave a la possibilité de définir des liens sur le fichier de fonctionnalités dans le référentiel GIT. Le lien sera défini automatiquement lorsque vous générez un rapport Allure. Cette fonction peut être activée via la configuration de la variable d'environnement `OVERHAVE_GIT_PROJECT_URL` :
export OVERHAVE_GIT_PROJECT_URL=https://git.myorg.com/bdd-features-repo Le langage d'interface Web est Eng par défaut et ne peut pas être commuté (si cela est nécessaire - veuillez créer une `feature request` ou vous contribuer).
Le texte de caractéristique ainsi que les mots clés BDD PyTest-BDD sont configurables avec des modèles supplémentaires sur- (par exemple les mots clés RUS sont déjà définis dans le cadre et disponibles pour l'utilisation:
from overhave . extra import RUSSIAN_PREFIXES
language_settings = OverhaveLanguageSettings ( step_prefixes = RUSSIAN_PREFIXES )Remarque : vous pouvez créer votre propre mappage de valeur de préfixe pour votre langue:
from overhave import StepPrefixesModel
GERMAN_PREFIXES = StepPrefixesModel (
FEATURE = "Merkmal:" ,
SCENARIO_OUTLINE = "Szenarioübersicht:" ,
SCENARIO = "Szenario:" ,
BACKGROUND = "Hintergrund:" ,
EXAMPLES = "Beispiele:" ,
EXAMPLES_VERTICAL = "Beispiele: Vertikal" ,
GIVEN = "Gegeben " ,
WHEN = "Wann " ,
THEN = "Dann " ,
AND = "Und " ,
BUT = "Aber " ,
)Overwave donne la possibilité d'envoyer vos nouvelles fonctionnalités ou modifications dans le référentiel GIT distant, qui est hébergé par Bitbucket ou GitLab. L'intégration avec Bitbucket est native, tandis que l'intégration avec GitLab utilise la bibliothèque Python-GitLab.
Vous pouvez définir les paramètres nécessaires pour votre projet:
publisher_settings = OverhaveGitlabPublisherSettings (
repository_id = '123' ,
default_target_branch_name = 'master' ,
)
client_settings = OverhaveGitlabClientSettings (
url = "https://gitlab.mycompany.com" ,
auth_token = os . environ . get ( "MY_GITLAB_AUTH_TOKEN" ),
)La requête pull (pour bitbucket) ou la requête de fusion (pour Gitlab) créée lorsque vous cliquez sur le bouton Créer la demande de traction sur la page du résultat du test. Ce bouton est disponible uniquement pour le résultat de Success Test Run.
Remarque : L'un des cas les plus populaires d'authentification de l'API GitLab est le schéma OAuth2 avec le compte de service. Selon ce schéma, vous devriez avoir un jeton OAuth2, qui pourrait avoir une courte durée de vie et ne peut pas être spécifié dans l'environnement. Pour cette situation, OverHave a un tokenizerclient spécial avec ses propres tokenizerclicesttings - ce client simple pourrait prendre le jeton d'un service de tokenizer gitlab personnalisé distant.
Overwave donne la possibilité de synchroniser l'état actuel du référentiel GIT avec la base de données. Cela signifie que vos fonctionnalités, situées dans la base de données, pourraient être mises à jour - et la source des mises à jour est votre référentiel.
Par exemple : vous avez dû effectuer un remplacement de données en vrac dans le référentiel GIT, et maintenant vous souhaitez fournir des modifications à la base de données distante. Cette question qui n'est pas si facile pourrait être résolue avec des outils spéciaux surphés :
Vous pouvez définir les paramètres nécessaires pour votre projet:
overhave sync run # only update existing features
overhave sync run --create-db-features # update + create new features
overhave sync run --pull-repository # pull git repo and run syncVous pouvez tester cet outil avec un mode de démonstration en surpassement . Par défaut, 3 fonctionnalités sont créées dans la base de données de démonstration. Essayez simplement de les changer ou de créer de nouvelles fonctionnalités et d'exécuter la commande Synchronisation - vous obtiendrez le résultat.
overhave-demo sync-run # or with '--create-db-features'Surmonter la validation des fichiers de fonctionnalités existants. Commande Essayez d'analyser les fonctionnalités et de remplir le format d'information des fonctionnalités définies. S'il y a un problème, une erreur spéciale sera lancée.
overhave sync validate-features
overhave sync validate-features --raise-if-nullable-id
overhave sync validate-features --pull-repositoryEt oui, vous pouvez l'essayer avec le mode de démonstration:
overhave-demo validate-features
overhave sync validate-features -r # --raise-if-nullable-idOverwave donne la possibilité de définir le fichier Index.html personnalisé pour le rendu. Le chemin du fichier peut être défini via l'environnement ainsi que défini avec le contexte:
admin_settings = OverhaveAdminSettings (
index_template_path = "/path/to/index.html"
) Overwave fournit plusieurs stratégies d'autorisation, déclarées par `AuthorizationStrategy` Enum:
Une stratégie appropriée et des données supplémentaires doivent être placées dans `OverhaveAuthorizationSettings` , par exemple la stratégie LDAP pourrait être configurée comme ceci:
auth_settings = OverhaveAuthorizationSettings ( auth_strategy = AuthorizationStrategy . LDAP )
ldap_manager_settings = OverhaveLdapManagerSettings ( ldap_admin_group = "admin" )Overwave implémente la fonctionnalité pour les interactions S3 Cloud, telles que la création et la suppression du seau, le téléchargement, le téléchargement et la suppression des fichiers. Le framework offre la possibilité de stocker des rapports et d'autres fichiers dans le stockage cloud S3 distant. Vous pouvez enrichir votre environnement avec les paramètres suivants:
OVERHAVE_S3_ENABLED=true
OVERHAVE_S3_URL=https://s3.example.com
OVERHAVE_S3_ACCESS_KEY= < MY_ACCESS_KEY >
OVERHAVE_S3_SECRET_KEY= < MY_SECRET_KEY >En option, vous pouvez également modifier les paramètres par défaut:
OVERHAVE_S3_VERIFY=false
OVERHAVE_S3_AUTOCREATE_BUCKETS=true Le framework avec `OVERHAVE_S3_AUTOCREATE_BUCKETS` créera des seaux d'application dans le stockage distant si les seaux n'existent pas.
Overwave a sa propre interface de programmation d'applications, basée sur FastAPI.
Surmonter openapi.json à travers la fanfaronnade
Les possibilités actuelles pourraient être affichées via un fanfaron intégré - il suffit d'exécuter l'API et d'ouvrir http: // localhost: 8000 dans votre navigateur.
overhave api -p 8000 L'interface a l'autorisation via le schéma OAuth2, vous devez donc configurer `OVERHAVE_API_AUTH_SECRET_KEY` pour l'utilisation.
À l'heure actuelle, l'API implémente les types de ressources:
Les contributions sont les bienvenues.
L'installation du projet est très facile et ne prend que quelques commandes préparées (faire des œuvres préalables uniquement pour Ubuntu; afin que vous puissiez installer les mêmes packages pour votre système d'exploitation manuellement):
make pre-init
make initLa gestion des packages est fournie par la poésie.
Les tests peuvent être exécutés avec TOX. Docker-Compose est utilisé pour la préparation et la service des autres services, tels que la base de données. Exécution de tests et de linceurs simples:
make up
make test
make lintS'il vous plaît, consultez le fichier et découvrez les raccourcis utiles. Vous pouvez également exécuter des tests dans Docker Container:
make test-dockerLa documentation du projet pourrait être construite via Sphinx et Simple Make Commande:
make build-docsPar défaut, la documentation sera construite à l'aide de HTML Builder dans le répertoire _build.
Distribué selon les termes de la licence GNU GPLV2.
Si vous rencontrez des problèmes, veuillez les signaler ici dans les problèmes de section avec une description détaillée.