Over-se é o trabalho da web para BDD: escalável, configurável, fácil de usar, com base no gesto e pydantic.

Você pode instalar o excesso via PIP da Pypi:
pip install overhaveA interface da web é uma ferramenta básica para o gerenciamento de recursos do BDD. Consiste em:
Informações - Página de índice com informações opcionais sobre sua ferramenta ou projeto;
Recursos, execuções de teste, versões e tags:
fornece uma interface para o gerenciamento de registros de recursos e fornece informações sobre ID, nome do autor, tempo, editor e status de publicação; É possível pesquisar, editar ou excluir itens através do painel de scripts.
fornece uma interface para o gerenciamento de execuções de teste e fornece informações sobre.
contém versões de recursos nas execuções correspondentes às testes; As versões contêm-links no repositório Git remoto.
Contém valores de tags, que são usados para a etiqueta do recurso.
Usuários de teste - Seção para visualizar e configurar usuários de teste;
Subseções de grupos;
(em desenvolvimento).
Os recursos sobrecarregados podem ser criados e/ou editados através do painel de script especial no modo de edição de recursos. O recurso deve ter tipo registrado pelo aplicativo, nome exclusivo, tarefas especificadas com o formato tradicional `PRJ-NUMBER` e o texto do cenário.
O painel de script possui tabela de etapas pytest-bdd no lado direito da interface. Essas etapas devem ser definidas nos módulos de fixação apropriados e registrados no aplicativo na inicialização a ser exibida.
Exemplo de painel de script ou sobrecarregar no modo de edição de recursos
O excesso gera relatório de fército após a execução dos testes na interface da web. Se você executar testes manualmente através do Pytest, esses resultados poderão ser convertidos no relatório de fascínio também com a ferramenta CLI fascinante. Este relatório contém descrições de cenários, conforme elas são descritas nos recursos.
Exemplo de Relatório Allure Gerado após a execução do recurso de Over Havelave
Over-se tem um modo de demonstração especial (em desenvolvimento), que pode ser usado para demonstração da estrutura e depuração / teste manual. A estrutura fornece pontos de entrada da CLI para o servidor fácil executado no modo de depuração:
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 : Você pode executar o administrador em modo especial, que não requer consumidores. Este modo usa o Threadpool para executar tarefas de teste e publicação de forma assíncrona:
overhave-demo admin --threadpool --language=ruMas esse modo Threadpool é indescritível no paradigma de Kubernetes . Portanto, é altamente recomendável usar exatamente os consumidores correspondentes.
O Overhaed possui uma CLI que fornece uma maneira simples de iniciar a interface da Web de serviço, executar o consumidor e executar operações básicas de banco de dados. Exemplos estão abaixo:
overhave db create-all
overhave admin --port 8080
overhave consumer -s publication
overhave api -p 8000 -w 4 NOTA : O start-up de serviço exige um conjunto de configurações, para que você possa defini-las através do ambiente virtual com prefixo `OVERHAVE_` , por exemplo` `OVERHAVE_DB_URL` . Se você deseja definir configurações de maneira mais explícita através da injeção de contexto, consulte a próxima parte dos documentos.
O serviço pode ser configurado por meio de injeção de contexto de aplicativo com instância preparada do objeto OverHaveContext. Esse contexto pode ser definido usando a função `set_context` da instância` `ProxyFactory` inicializada.
Por exemplo, `my_custom_context` preparado. Portanto, a start-up de aplicativo pode ser realizada com o código seguinte:
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 )Observação :
`overhave_app` é o aplicativo de frasco preparado com já ativado`overhave_factory` é uma função para a instância em cache de LRU do Over -se`ProxyFactory` ; A instância tem um acesso aos componentes do aplicativo, usado diretamente em `overhave_app` .`my_custom_context` é um exemplo de configuração de contexto, veja umOver- se tem arquitetura de consumidor de produtores, baseada em fluxos de Redis, e apoiou 3 tipos de consumidores:
`overhave_test_execution_factory` ;`overhave_publication_factory` ;`overhave_emulation_factory` . NOTA : O `overhave_test_execution_factory` tem capacidade de injeção de contexto e pode ser enriquecido com o contexto personalizado como` `overhave_admin_factory` .
O excesso de suporta sua própria estrutura especial de projeto:
A abordagem correta é criar um diretório raiz (como "demonstração" dentro do repositório atual) que contém recursos , acessórios e diretórios de etapas .
O diretório de recursos contém diferentes tipos de recursos como diretórios separados, cada um deles corresponde ao conjunto de etapas predefinidas de Pytest-BDD.
O diretório de acessórios contém módulos típicos de pytest divididos por diferentes tipos de recursos. Esses módulos são usados para execuções de teste isoladas Pytest-BDD. É necessário devido ao mecanismo especial da coleção de etapas pytest-bdd.
O diretório de etapas contém pacotes de etapas pytest-bdd divididos por diferentes tipos de recursos também. Cada subdiretório de etapas tem seu próprio passo declarado, de acordo com o tipo de recurso suportado.
Portanto, é possível criar sua própria estrutura horizontal de diferentes direções do produto com etapas exclusivas e acessórios de pytest.
NOTA : Essa estrutura é usada na aplicação exagerada . Os dados formados oferecem a possibilidade de especificar o tipo de recurso registrado no painel de script da Interface da Web. Além disso, essa estrutura define quais etapas serão exibidas no lado direito do painel de scripts .
Over-se tem seu próprio formato de texto de recurso especial, que herda o Gherkin do Pytest-BDD com atualizações exclusivas:
`@severity.blocker` );`PRJ-1234` ;Um exemplo de conteúdo de recurso preenchido está localizado em rache_example.rst.
O excesso de implementa a solução para o uso de marcadores de pytest com informações adicionais personalizadas:
Exemplos:
@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 featureSe a razão contiver URL, portanto, será necessário anexar o link fascinante ao relatório: para desativado - ele será linktype.link, para xfail - linktype.issue.
O excesso tem capacidade de definir links para seu próprio serviço de administração em casos de teste de fascínio. O link será definido automaticamente quando você gerar um relatório de fércla. Esta função pode ser ativada por meio da configuração da variável de ambiente `OVERHAVE_ADMIN_URL` :
export OVERHAVE_ADMIN_URL=https://overhave-admin.myorg.com Além disso, o excesso tem capacidade de definir links para apresentar arquivos no repositório Git. O link será definido automaticamente quando você gerar um relatório de fércla. Esta função pode ser ativada através da configuração da variável de ambiente `OVERHAVE_GIT_PROJECT_URL` :
export OVERHAVE_GIT_PROJECT_URL=https://git.myorg.com/bdd-features-repo O idioma da interface da Web é o ENG por padrão e não pôde ser alterado (se for necessário - por favor, crie uma `feature request` ou contribuir).
O texto do recurso, bem como as palavras-chave Pytest-BDD BDD, são configuráveis com modelos extras excedentes , por exemplo, as palavras-chave RUS já estão definidas na estrutura e estão disponíveis para uso:
from overhave . extra import RUSSIAN_PREFIXES
language_settings = OverhaveLanguageSettings ( step_prefixes = RUSSIAN_PREFIXES )Nota : Você pode criar seu próprio mapeamento de valor prefixo para o seu 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 " ,
)O Over -Have oferece a capacidade de enviar seus novos recursos ou alterações ao repositório Git remoto, que é hospedado pelo Bitbucket ou GitLab. A integração com o Bitbucket é nativa, enquanto a integração com o GitLab usa a biblioteca Python-Gitlab.
Você pode definir as configurações necessárias para o seu projeto:
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" ),
)A solicitação Pull-Request (para Bitbucket) ou Merge-Request (para GitLab) criada quando você clica no botão Criar solicitação de puxar na página Run Run Result. Este botão está disponível apenas para o resultado do sucesso do teste.
NOTA : Um dos casos mais populares de autenticação da API GITLAB é o esquema OAuth2 com conta de serviço. De acordo com esse esquema, você deve ter um token OAuth2, que pode ter uma curta duração e não pode ser especificado através do ambiente. Para essa situação, o Over -se tem um tokenizerclient especial com seus próprios tokenizerclientsettings - esse cliente simples pode tirar o token de um serviço de tokenizador GitLab personalizado remoto.
O Over -Have oferece a capacidade de sincronizar o estado do seu repositório Git atual com o banco de dados. Isso significa que seus recursos, localizados no banco de dados, podem ser atualizados - e a fonte de atualizações é o seu repositório.
Por exemplo : você teve que fazer a substituição de dados em massa no repositório Git e agora deseja fornecer alterações no banco de dados remoto. Esta matéria não tão fácil pode ser resolvida com ferramentas especiais sobrecarregadas :
Você pode definir as configurações necessárias para o seu projeto:
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 syncVocê pode testar esta ferramenta com o modo de demonstração excedente . Por padrão, 3 recursos são criados no banco de dados Demo. Apenas tente alterá -los ou criar novos recursos e executar o comando de sincronização - você obterá o resultado.
overhave-demo sync-run # or with '--create-db-features'O excedente suporta a validação dos arquivos de recursos existentes. Command Tente analisar os recursos e preencher o formato de informações de recurso definido. Se houver algum problema, um erro especial será lançado.
overhave sync validate-features
overhave sync validate-features --raise-if-nullable-id
overhave sync validate-features --pull-repositoryE sim, você pode experimentá -lo com o modo de demonstração:
overhave-demo validate-features
overhave sync validate-features -r # --raise-if-nullable-idO Overhaed oferece a capacidade de definir o arquivo Index.html personalizado para renderização. Caminho a arquivo pode ser definido através do ambiente, bem como definido com o contexto:
admin_settings = OverhaveAdminSettings (
index_template_path = "/path/to/index.html"
) Over -se fornece várias estratégias de autorização, declaradas por `AuthorizationStrategy` Enum:
A estratégia apropriada e os dados adicionais devem ser colocados em `OverhaveAuthorizationSettings` , por exemplo, a estratégia LDAP pode ser configurada assim:
auth_settings = OverhaveAuthorizationSettings ( auth_strategy = AuthorizationStrategy . LDAP )
ldap_manager_settings = OverhaveLdapManagerSettings ( ldap_admin_group = "admin" )O excesso de implementa a funcionalidade para interações em nuvem S3 , como criação e exclusão de balde, upload de arquivos, download e exclusão. A estrutura fornece a capacidade de armazenar relatórios e outros arquivos no remoto S3 Cloud Storage. Você pode enriquecer seu ambiente com as seguintes configurações:
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, você pode alterar as configurações padrão também:
OVERHAVE_S3_VERIFY=false
OVERHAVE_S3_AUTOCREATE_BUCKETS=true A estrutura com `OVERHAVE_S3_AUTOCREATE_BUCKETS` ativado habilitado criará baldes de aplicativos em armazenamento remoto se não existirem.
Over -se tem sua própria interface de programação de aplicativos, baseada no FASTAPI.
Over -se openapi.json através de Swagger
As possibilidades atuais podem ser exibidas através do Swagger embutido - basta executar a API e abrir http: // localhost: 8000 no seu navegador.
overhave api -p 8000 A interface possui autorização por meio do esquema OAuth2, então você deve configurar `OVERHAVE_API_AUTH_SECRET_KEY` para uso.
No momento, a API implementa tipos de recursos:
As contribuições são muito bem -vindas.
A instalação do projeto é muito fácil e leva apenas poucos comandos preparados (faça obras pré-initadas apenas para o Ubuntu; para que você possa instalar os mesmos pacotes para o seu sistema operacional manualmente):
make pre-init
make initO gerenciamento de pacotes é fornecido pela poesia.
Os testes podem ser executados com TOX. O Docker-Compose é usado para outros serviços de preparação e serviço, como o banco de dados. Execução simples de testes e linheiros:
make up
make test
make lintPor favor, consulte Faça o arquivo e descubra atalhos úteis. Você também pode executar testes no recipiente do docker:
make test-dockerA documentação do projeto pode ser construída via Sphinx e Command Simples Make:
make build-docsPor padrão, a documentação será criada usando o HTML Builder no diretório _build.
Distribuído sob os termos da licença GNU GPLV2.
Se você encontrar algum problema, relate -os aqui em problemas de seção com uma descrição detalhada.