Overhave es el trabajo de marco web para BDD: escalable, configurable, fácil de usar, basado en Flask Admin y Pydantic.

Puede instalar Overhave a través de PIP desde Pypi:
pip install overhaveLa interfaz web es una herramienta básica para la administración de características de BDD. Consiste en:
Información: página de índice con información opcional sobre su herramienta o proyecto;
Características, ejecuciones de prueba, versiones y etiquetas:
ofrece una interfaz para la administración de registros de características y proporciona información sobre ID, nombre de nombre, tiempo, editor y estado de publicación; Es posible buscar, editar o eliminar elementos a través del panel de script.
Da una interfaz para la administración de ejecuciones de prueba y proporciona información sobre.
contiene versiones de características en correspondencia a las ejecuciones de prueba; Las versiones contienen enlaces PR al repositorio de git remoto.
Contiene valores de etiquetas, que se utilizan para el etiquetado de la función.
Usuarios de prueba: sección para ver y configurar usuarios de prueba;
Agrupar subsecciones;
(en desarrollo).
Las características de Overhave podrían crearse y/o editarse a través del panel de script especial en el modo de edición de funciones. La función debe tener el tipo registrado por la aplicación, el nombre único, la lista de tareas especificadas con el formato tradicional `PRJ-NUMBER` y el texto del escenario.
El panel de script tiene una tabla Pytest-BDD Pass en el lado derecho de la interfaz. Estos pasos deben definirse en módulos de accesorio apropiados y registrarse en la aplicación en el inicio que se mostrará.
Ejemplo del panel de script de Overhave en el modo de edición de funciones
Overhave genera un informe Allure después de la ejecución de las pruebas en la interfaz web. Si ejecuta pruebas manualmente a través de PyTest, estos resultados se pueden convertir en el informe Allure también con la herramienta Allure CLI. Este informe contiene descripciones de escenarios como se describen en las características.
Ejemplo del informe de Allure generado después de la ejecución de la función Overhave
Overhave tiene un modo de demostración especial (en desarrollo), que posiblemente podría usarse para la demostración del marco y la depuración / prueba manual. El marco proporciona un CLI EntryPoints para una fácil ejecución del servidor en modo de depuración:
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 consumerNota : Puede ejecutar Admin en modo especial, que no requiere consumidores. Este modo utiliza Threadpool para ejecutar tareas de prueba y publicación de forma asincrónica:
overhave-demo admin --threadpool --language=ruPero este modo Threadpool no se puede calcular en el paradigma de Kubernetes . Por lo tanto, se recomienda usar exactamente los consumidores correspondientes.
Overhave tiene una CLI que proporciona una forma simple de iniciar la interfaz web del servicio, ejecutar el consumidor y ejecutar operaciones básicas de la base de datos. Los ejemplos están a continuación:
overhave db create-all
overhave admin --port 8080
overhave consumer -s publication
overhave api -p 8000 -w 4 Nota : El inicio del servicio toma un conjunto de configuraciones, por lo que puede configurarlos a través del entorno virtual con prefijo `OVERHAVE_` , por ejemplo` `OVERHAVE_DB_URL` . Si desea configurar la configuración de una manera más explícita a través de la inyección de contexto, consulte la siguiente parte de los documentos.
El servicio podría configurarse a través de la inyección de contexto de aplicación con una instancia preparada del objeto OverhaveContext. Este contexto podría establecerse utilizando la función `set_context` de la instancia` `ProxyFactory` inicializada.
Por ejemplo, preparado `my_custom_context` . Por lo tanto, el inicio de la aplicación podría realizarse con el código de seguimiento:
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 )Nota :
`overhave_app` es la aplicación de matraz preparada con ya habilitado`overhave_factory` es una función para la instancia en caché de LRU de la Overhave`ProxyFactory` ; La instancia tiene un acceso a los componentes de la aplicación, utilizados directamente en `overhave_app` .`my_custom_context` es un ejemplo de configuración de contexto, consulte unOverhave tiene una arquitectura de consumidor de productores, basada en transmisiones de Redis, y admitió 3 tipos de consumidores:
`overhave_test_execution_factory` ;`overhave_publication_factory` ;`overhave_emulation_factory` . Nota : El `overhave_test_execution_factory` tiene capacidad para la inyección de contexto y podría enriquecerse con el contexto personalizado como` `overhave_admin_factory` .
Overhave admite su propia estructura de proyecto especial:
El enfoque correcto es crear un directorio raíz (como "demostración" dentro del repositorio actual) que contenga características , accesorios y directorios de pasos .
El directorio de características contiene diferentes tipos de características como directorios separados, cada uno de ellos corresponde al conjunto de pasos Pytest-BDD predefinidos.
El directorio de accesorios contiene módulos pytest típicos divididos por diferentes tipos de características. Estos módulos se utilizan para las ejecuciones de prueba aisladas Pytest-BDD. Es necesario debido al mecanismo especial de la colección de pasos Pytest-BDD.
El directorio de pasos contiene paquetes de pasos Pytest-BDD divididos también por tipos de características diferentes. Cada subdirectorio de pasos tiene sus propios pasos declarados según el tipo de característica compatible.
Por lo tanto, es posible crear su propia estructura horizontal de diferentes instrucciones del producto con pasos únicos y accesorios de pytest.
Nota : Esta estructura se utiliza en la aplicación de Overhave . Los datos formados brindan la posibilidad de especificar el tipo de función registrada en el panel de script de interfaz web. Además, esta estructura define qué pasos se mostrarán en el lado derecho del panel de script .
Overhave tiene su propio formato de texto de característica especial, que hereda Gherkin de Pytest-BDD con actualizaciones únicas:
`@severity.blocker` );`PRJ-1234` ;Un ejemplo de contenido de características llenas se encuentra en function_example.rst.
Overhave implementa la solución para el uso de marcadores de pytest con información adicional personalizada:
Ejemplos:
@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 razón contiene URL, por lo que Overhave adjuntará Allure Link al Informe: Para discapacitado, será LinkType.link, para XFail - LinkType.issue.
Overhave tiene la capacidad de establecer enlaces a su propio servicio de administración en los casos de prueba Allure. El enlace se establecerá automáticamente cuando genere un informe Allure. Esta función se puede habilitar mediante la configuración de la variable de entorno `OVERHAVE_ADMIN_URL` :
export OVERHAVE_ADMIN_URL=https://overhave-admin.myorg.com Además, Overhave tiene la capacidad de establecer enlaces para presentar el archivo en el repositorio Git. El enlace se establecerá automáticamente cuando genere un informe Allure. Esta función se puede habilitar mediante la configuración de la variable de entorno `OVERHAVE_GIT_PROJECT_URL` :
export OVERHAVE_GIT_PROJECT_URL=https://git.myorg.com/bdd-features-repo El idioma de la interfaz web es ENG de forma predeterminada y no se puede cambiar (si es necesario, por favor, cree una `feature request` o contribuya).
El texto de la función y las palabras clave Pytest-BDD BDD son configurables con modelos adicionales de Overhave , por ejemplo, las palabras clave RUS ya están definidas en el marco y están disponibles para su uso:
from overhave . extra import RUSSIAN_PREFIXES
language_settings = OverhaveLanguageSettings ( step_prefixes = RUSSIAN_PREFIXES )Nota : Puede crear su propia asignación de valor de prefijo para su idioma:
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 " ,
)Overhave brinda la capacidad de enviar sus nuevas características o cambios al repositorio remoto de Git, que está alojado por Bitbucket o GitLab. La integración con Bitbucket es nativa, mientras que la integración con GitLab utiliza la biblioteca Python-GitLab.
Puede establecer la configuración necesaria para su proyecto:
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" ),
)Pull-Request (para BitBucket) o Merge-Request (para GITLAB) creado cuando hace clic en el botón Crear solicitud de extracción en la página de prueba de prueba de prueba. Este botón está disponible solo para el resultado de la ejecución de la prueba de éxito.
Nota : Uno de los casos más populares de autenticación de la API de GitLab es el esquema OAuth2 con cuenta de servicio. Según este esquema, debe tener Token Oauth2, lo que podría tener una breve vida útil y no podría especificarse a través del entorno. Para esta situación, Overhave tiene TokenizerClient especial con sus propios TokenizerClientSettings: este cliente simple podría tomar el token de un servicio de tokenizador GitLab personalizado remoto.
Overhave ofrece la capacidad de sincronizar el estado de su repositorio Git actual con la base de datos. Significa que sus características, que se encuentran en la base de datos, podrían actualizarse, y la fuente de actualizaciones es su repositorio.
Por ejemplo : tenía que hacer un reemplazo de datos a granel en el repositorio de Git, y ahora desea entregar cambios a la base de datos remota. Esto no tan fácil podría resolverse con herramientas especiales de Overhave :
Puede establecer la configuración necesaria para su proyecto:
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 syncPuede probar esta herramienta con el modo de demostración de Overhave . Por defecto, se crean 3 características en la base de datos de demostración. Simplemente intente cambiarlas o crear nuevas funciones y ejecute el comando de sincronización; obtendrá el resultado.
overhave-demo sync-run # or with '--create-db-features'Overhave admite la validación de los archivos de características existentes. Comando intente analizar las funciones y completar el formato de información de características definidas. Si hay algún problema, se lanzará un error especial.
overhave sync validate-features
overhave sync validate-features --raise-if-nullable-id
overhave sync validate-features --pull-repositoryY sí, puede probarlo con el modo de demostración:
overhave-demo validate-features
overhave sync validate-features -r # --raise-if-nullable-idOverhave proporciona la capacidad de establecer el archivo Custom Index.html para la representación. Ruta al archivo podría establecerse a través del entorno y establecer con contexto:
admin_settings = OverhaveAdminSettings (
index_template_path = "/path/to/index.html"
) Overhave proporciona varias estrategias de autorización, declaradas por `AuthorizationStrategy` enum:
La estrategia apropiada y los datos adicionales deben colocarse en `OverhaveAuthorizationSettings` , por ejemplo, la estrategia LDAP podría configurarse así:
auth_settings = OverhaveAuthorizationSettings ( auth_strategy = AuthorizationStrategy . LDAP )
ldap_manager_settings = OverhaveLdapManagerSettings ( ldap_admin_group = "admin" )Overhave implementa la funcionalidad para las interacciones en la nube S3 , como la creación y eliminación de deseos, la carga de archivos, la descarga y la eliminación. El marco proporciona la capacidad de almacenar informes y otros archivos en el almacenamiento remoto de la nube S3. Puede enriquecer su entorno con la siguiente configuración:
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 >Opcionalmente, también puede cambiar la configuración predeterminada:
OVERHAVE_S3_VERIFY=false
OVERHAVE_S3_AUTOCREATE_BUCKETS=true El marco con la bandera habilitada `OVERHAVE_S3_AUTOCREATE_BUCKETS` creará cubos de aplicación en el almacenamiento remoto si no existen cubos.
Overhave tiene su propia interfaz de programación de aplicaciones, basada en Fastapi.
Over Have Openapi.json a través de Swagger
Las posibilidades actuales se pueden mostrar a través de la arrogancia incorporada: solo ejecute la API y abra http: // localhost: 8000 en su navegador.
overhave api -p 8000 La interfaz tiene autorización a través del esquema OAuth2, por lo que debe configurar `OVERHAVE_API_AUTH_SECRET_KEY` para el uso.
En este momento, API implementa tipos de recursos:
Las contribuciones son muy bienvenidas.
La instalación del proyecto es muy fácil y toma solo unos pocos comandos preparados (haga que los funcionen previamente en la INIT solo para Ubuntu; para que pueda instalar los mismos paquetes para su sistema operativo manualmente):
make pre-init
make initLa gestión de paquetes es proporcionada por la poesía.
Las pruebas se pueden ejecutar con Tox. Docker-Compose se utiliza para otros servicios de preparación y servicio, como la base de datos. Pruebas simples y ejecución de los enlaces:
make up
make test
make lintPor favor, consulte Make File y descubra atajos útiles. También podría ejecutar pruebas en Docker Container:
make test-dockerLa documentación del proyecto podría construirse a través de Sphinx y Comando Simple Make:
make build-docsPor defecto, la documentación se construirá utilizando HTML Builder en el directorio _build.
Distribuido bajo los términos de la licencia GNU GPLV2.
Si se encuentra con algún problema, informe aquí en los problemas de la sección con una descripción detallada.