testproject python sdk tutorial
Tutorial do TestProject Python SDK: turbine seus testes existentes de Selenium e AppiumEste tutorial ajudará você a começar a usar o TestProject Python SDK. Aprenda a instalar, configurar e usar os recursos mais poderosos do SDK:
Selenium e Appium estão entre as estruturas de teste de código aberto mais populares para navegadores de desktop e testes baseados em dispositivos móveis há anos.
O TestProject Python SDK baseia-se nessas ferramentas e fornecem o poder da plataforma TestProject, fornecendo lindos relatórios em HTML e PDF em suas plataformas de relatórios, detecção automática de navegador, configuração de driver e muito mais.
E o melhor é que usar a plataforma TestProject e o SDK é totalmente grátis, para sempre. O SDK também é um código-fonte aberto, portanto, se você quiser contribuir com o projeto, você pode!
O que você aprenderá:
O que é TestProject Python SDK?
Neste tutorial, você verá como começar com o TestProject Python SDK, como aproveitar a plataforma TestProject com seus testes existentes baseados em Selenium e Appium, bem como como usar alguns dos recursos mais poderosos do SDK.
Observação : Seus testes são escritos em uma linguagem diferente de Python? Não precisa se preocupar, TestProject oferece SDKs para Java e C # também, com mais linguagens chegando em um futuro próximo.
Instalação e configuração
=> Visite esta página para inscrição gratuita no TestProjectPython SDK está disponível em PyPI , o índice do pacote Python. Aqui, estamos assumindo que você tem uma instalação do Python funcionando, tudo o que você precisa fazer é instalar o SDK e, para isso, execute o seguinte comando:
pip install testproject-python-sdk
Isso instalará o SDK e suas dependências necessárias, incluindo Selenium e o cliente Python Appium.
Antes de começarmos a usar o SDK, precisamos fazer mais duas coisas.
# 1) Instale e configure o TestProject Agent em sua máquina:
O TestProject Agent é responsável pela instalação e configuração do driver do navegador, bem como pelo envio dos relatórios gerados pelo SDK para a plataforma TestProject.
Depois de criar uma conta no TestProject plataforma (novamente, isso é gratuito), você pode fazer o download do seu agente.
Após o download, você precisará instalá-lo e iniciá-lo. Por padrão, o Agente é executado em http: // localhost: 8585. Se você deseja executar o Agente em uma porta diferente, ou mesmo em uma máquina totalmente diferente, não há problema. Neste caso, tudo que você precisa fazer é especificar o endereço correto do Agente em uma variável de ambiente TP_AGENT_URL para permitir que o SDK saiba onde está sendo executado.
# 2) Obtenha e configure um token de desenvolvedor:
Para se comunicar com o Agente, você também precisará de um token de desenvolvedor. Depois de instalar o Agente, você pode obter seu token de desenvolvimento no site da plataforma TestProject, conforme mostrado na imagem abaixo.
Especifique seu token de desenvolvedor em uma variável de ambiente TP_DEV_TOKEN para tornar o SDK ciente disso. Alternativamente, você pode especificá-lo como um argumento ao criar uma nova sessão de driver, como veremos em breve.
Depois de fazer download do SDK, instalar, configurar e iniciar o Agente, obter e configurar seu token de desenvolvedor, você está pronto para prosseguir.
Criando nosso primeiro teste de selênio baseado em TestProject
Vamos supor que temos um teste baseado em Selenium que navega para o aplicativo da web de demonstração TestProject. Ele fornece credenciais de login e verifica se somos recebidos para indicar que a ação de login foi concluída com êxito. Suponhamos também que usamos a estrutura de teste de unidade Pytest para executar este teste e executar as asserções.
Esse teste pode ser semelhante a este:
from selenium import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.get('https://example.testproject.io/web/') driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() is True driver.quit()
O exemplo acima usa o Chrome como navegador. Além do Chrome, o SDK também oferece suporte aos seguintes navegadores de desktop:
- Raposa de fogo
- Beira
- Internet Explorer
- Safári
Para este exemplo, não usamos nenhum dos padrões de abstração que são comuns em testes baseados em Selenium, como objetos de página, mas se você os usar, isso não será problema. Na verdade, nós o recomendamos, pois isso cria uma separação clara entre seu fluxo de teste (ações, dados de teste) e os detalhes de implementação de suas páginas da web (localizadores de elemento).
Após a conclusão de todas as etapas de instalação e configuração mostradas acima, tudo que você precisa fazer para transformar este teste em um teste baseado em TestProject é substituir a instrução de importação conforme explicado abaixo.
from selenium import webdriver
Relace com este:
from src.testproject.sdk.drivers import webdriver
É isso! Depois de executar o teste agora, o SDK solicitará uma instância do driver do TestProject Agent e a usará para executar o teste. Ele também enviará instruções de relatório para a plataforma TestProject, que serão usadas para criar relatórios HTML. Vamos dar uma olhada nisso!
Inspecionando relatórios na plataforma TestProject
Indo para TestProject e selecionando as opções de ‘Relatórios’ no menu, você pode ver que um novo relatório foi criado para o teste que acabamos de executar. Consulte a imagem abaixo.
web services c # perguntas da entrevista
Como você pode ver, o SDK inferiu automaticamente um nome de projeto ( software_testing_help ), um nome de trabalho ( exemplos ) e um nome de teste ( test_login_to_testproject_example_app ) e os usou ao criar o relatório. Isso é compatível com Pytest e Unittest, bem como para testes que não são executados usando uma estrutura de teste de unidade dedicada.
Veremos como especificar os nomes personalizados do projeto, trabalho e teste, bem como uma série de outras opções de relatório úteis na próxima seção.
Todos os comandos do driver que foram executados durante o teste são adicionados automaticamente ao relatório, junto com seus resultados. TestProject também gera visões gerais e painéis prontos para uso.
Opções de personalização de relatórios com TestProject
Embora o TestProject gere relatórios avançados e utilizáveis prontos para uso, há várias maneiras de personalizá-los para atender aos seus requisitos de informação ainda melhor.
Como vimos no exemplo anterior, TestProject é capaz de inferir automaticamente nomes de projeto, trabalho e teste para as estruturas de teste de unidade Python mais populares. Se você deseja usar nomes personalizados em seus relatórios, no entanto, isso também pode ser feito de duas maneiras diferentes.
# 1) Usando um decorador
O TestProject SDK também apresenta um @relatório decorador que você pode usar para decorar seus métodos de teste e que você pode usar para especifique o projeto personalizado, trabalho e nomes de teste, conforme mostrado abaixo:
from src.testproject.sdk.drivers import webdriver from src.testproject.decorator import report @report(project='Software Testing Help', job='SDK Examples', test='Login Test') def test_login_to_testproject_example_app(): driver = webdriver.Chrome() # the rest of the test method remains unchanged
Quando executamos este método de teste decorado e inspecionamos os relatórios, podemos ver que os nomes especificados foram usados no relatório gerado, em vez dos inferidos automaticamente.
# 2) Especificar projetos e nomes de trabalho no construtor de driver e relatar um teste manualmente:
Os nomes do projeto e do trabalho também podem ser substituídos especificando-os no construtor do objeto driver. Isso pode ser feito da seguinte forma:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome(projectname='Software Testing Help', jobname='SDK Examples') # the rest of the test method remains unchanged
Se quiser substituir o nome do teste inferido automaticamente, você pode relatar um teste manualmente no final do teste, assim:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome(projectname='Software Testing Help', jobname='SDK Examples') driver.get('https://example.testproject.io/web/') driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() is True driver.report().test(name='Login Test', passed=True) driver.quit()
Se você escolher usar a opção de relatório manual, deverá desativar o relatório automático de testes (que é ativado por padrão), para garantir que os testes não sejam relatados duas vezes, o que corromperia seu relatório e painéis.
Você pode desativar o relatório automático usando o seguinte comando:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_auto_test_reports(disabled=True) # the rest of the test method remains as above
Isso fará com que o relatório tenha exatamente a mesma aparência da última captura de tela acima.
# 3) Desativar relatórios de comandos do driver
Se você não quiser que seu relatório contenha todos os comandos de driver individuais que foram executados durante o teste, você pode desativar o relatório automático deles desta forma:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_command_reports(disabled=True) # the rest of the test method remains unchanged
Você também pode reativar o relatório de comando do driver posteriormente em seus testes, chamando o mesmo método novamente, mas com o argumento disabled = False.
Se ainda quiser relatar algumas etapas intermediárias durante o teste, você também pode fazer isso:
from src.testproject.sdk.drivers import webdriver def test_login_to_testproject_example_app(): driver = webdriver.Chrome() driver.report().disable_command_reports(disabled=True) driver.report().step(description='An intermediate step', message='A custom message', passed=True, screenshot=True) # here goes the rest of the test method
Como você pode ver, você pode até adicionar capturas de tela às etapas do seu relatório personalizado. Eles serão integrados automaticamente ao relatório HTML na plataforma TestProject.
O TestProject SDK oferece mais opções para personalizar ainda mais seus relatórios. Consulte a documentação oficial no site TestProject, GitHub ou PyPI para uma visão geral completa.
Execução de testes baseados em Appium usando TestProject
Além dos testes baseados em Selenium, o TestProject SDK também pode executar testes em dispositivos móveis usando Appium. Considere este exemplo, executando em um aplicativo Android nativo em um emulador:
from appium import webdriver def test_native_android_app(): desired_capabilities = { 'appActivity': 'io.testproject.demo.MainActivity', 'appPackage': 'io.testproject.demo', 'udid': '', 'browserName': '', 'platformName': 'Android', } driver = webdriver.Remote(desired_capabilities=desired_capabilities) driver.find_element_by_id('name').send_keys('John Smith') driver.find_element_by_id('password').send_keys('12345') driver.find_element_by_id('login').click() assert driver.find_element_by_id('greetings').is_displayed() driver.quit()
Para usar o poder da plataforma TestProject aqui, novamente, nós só precisamos mudar
from appium import webdriver
Para:
from src.testproject.sdk.drivers import webdriver
E estamos prontos para ir. O TestProject Agent também atua como o servidor Appium, então não há mais necessidade de executá-lo na máquina que está executando seus testes.
Todos os recursos de relatório descritos acima também estão disponíveis para testes baseados em Appium.
SDK suporta a execução de testes móveis:
- Para Android e também para iOS.
- Tanto em emuladores quanto em dispositivos reais.
- Em aplicativos nativos, bem como em navegadores móveis
Exemplos de todos eles podem ser encontrados no repositório de código SDK no GitHub.
Conclusão
Como você viu neste tutorial, o TestProject Python SDK pode ajudá-lo a sobrecarregar seus testes existentes baseados em Selenium e Appium eliminando as tarefas de configuração de drivers de navegador e servidor Appium, e gera excelentes relatórios HTML e painel para você a plataforma TestProject.
O melhor de tudo é que o TestProject Python SDK é totalmente gratuito.
=> Vá para TestProject para experimentar por si mesmo !
Sobre o autor: Bas Dijkstra
O autor ensina empresas ao redor do mundo como melhorar seus esforços de teste por meio da automação de teste. Ele é um treinador independente, consultor e desenvolvedor que mora na Holanda. No seu tempo livre, gosta de passear de bicicleta, correr ou ler um bom livro.
Leitura recomendada
- Tutorial de revisão prática da ferramenta de automação de teste TestProject
- Introdução ao Python e processo de instalação
- Crie testes de Appium para um aplicativo Android
- Tutorial de Python para iniciantes (treinamento prático e gratuito em Python)
- Executando seus testes de Appium em paralelo usando Appium Studio for Eclipse
- Criação de testes de épocas usando o epochs Studio for Eclipse
- Como executar testes de Appium em grande escala em paralelo
- Integrar em seu IDE para executar seus testes Appium