Pesquisar este blog

terça-feira, 16 de dezembro de 2014

quarta-feira, 10 de dezembro de 2014

TestLink + Python - Reportando os testes realizados.


Nesse post vamos fazer uma classe genérica para reportar o resultado do teste realizado para o TestLink.

Vamos listar as coisas que devemos fazer primeiro para criar o reporte no testlink.

1. Precisamos criar primeiro os seguinte itens:  Test Project Management Test Plan Management.
  • Como estes dois Itens não mudam todo tempo, recomendo fazer manualmente no inicio do projeto, caso você queira fazer, já digo que a ultima versão do TestLink 1.9.12 esta com um bug quando você tenta fazer várias vezes o Test Plan Management, a tela fica em branco, pode ser problema de memória, mas não perdi muito tempo com isso.
2. Necessário criar o Builds / Releases.
  • Criamos uma função para criar o Build - create_build(self, newBuildID, buildName, buildNotes), passamos como paramêtro ID do build, nome do build, descrição do mesmo.
3.  Pegar o ID do Test Case passando o Nome como parâmetro para a função testCaseIDByName(self, TESTCASE).

4.  Pegar o ID do Test Plan passando o Nome do Test Plan como parâmetro para a função getTestPlanId(self, NEWTESTPLAN).

5. Agora vamos realizar o reporte do teste realizado, passando os dados (id do caso de teste, id do plano de teste, buildname, resultado do teste -> PASSED=p , FAILED=f , BLOCKED=b, descrição do teste realizado) para a função reportTCResult(self, tcid, tpid, buildname, Result, notes).

Exemplo:

"""
Class Testlink to connection with server TestLink
Author: Reinaldo M.R.J
Date: 10-12-2014 - Version: 0.X
"""
import testlink

class class_Testlink(object):

    def __init__(self):

        # Endereço do Servidor xmlrpc
        TESTLINK_SERVER_URL = '.../lib/api/xmlrpc/v1/xmlrpc.php'
        # Chave gerada pelo TestLink
        TESTLINK_DEVKEY = 'bdcc743a0cd80052bf8c28XXXXXXXX'
        tlh = testlink.TestLinkHelper(TESTLINK_SERVER_URL, TESTLINK_DEVKEY)
        self.myTestLink = tlh.connect(testlink.TestlinkAPIClient)
        # Nome do Projeto, caso você tenha vários poderia enviar como parâmetro para classe.
        self.Project = "XXXXXXXX"

    def reportTCResult(self, tcid, tpid, buildname, Result, notes):

        return self.myTestLink.reportTCResult(tcid, tpid, buildname, Result, notes)

    def testCaseIDByName(self, TESTCASE):
            
        response = self.myTestLink.getTestCaseIDByName(TESTCASE, testprojectname=self.Project)
        print response
        response = response[0].get("id")
        return response


    def getTestPlanId(self, NEWTESTPLAN):

        response = self.myTestLink.getTestPlanByName(self.Project, NEWTESTPLAN)
        print "getTestPlanByName", response
        response = response[0].get("id")
        return response


    def create_build(self, newBuildID, buildName, buildNotes):

        newBuild = self.myTestLink.createBuild(newBuildID, buildName, buildNotes)
        isOk = newBuild[0]['message']
        if isOk == "Success!":
            newBuildID = newBuild[0]['id']
            print "New Test Build '%s' - id: %s" % (buildName, newBuildID)
        else:
            print "Error creating the Test Build '%s': %s " % (buildName, isOk)
            return




quarta-feira, 19 de novembro de 2014

Instalando o TestLink-API-Python-client (TestLink + Python)

Nesse post vamos fazer a conexão dos scripts em python com o TestLink, é uma ótima solução para reportar o resultado dos seus testes automatizados.

A forma mais fácil de instalar via Python, é pelo comando abaixo:

pip install TestLink-API-Python-client



No link abaixo temos como instalar o PIP:
http://reinaldorossetti.blogspot.com.br/2014/01/instalando-o-selenium-no-python-na.html

Fizemos um código para realizar a conexão com o Servidor, segue o código abaixo:

import testlink
TESTLINK_API_PYTHON_SERVER_URL='<server_web_do_teste_link>/lib/api/xmlrpc/v1/xmlrpc.php'
TESTLINK_API_PYTHON_DEVKEY='Sua Chave gerada no TestLink'

testlink.TestLinkHelper(TESTLINK_API_PYTHON_SERVER_URL,TESTLINK_API_PYTHON_DEVKEY)
myTestLink = tlh.connect(testlink.TestlinkAPIClient)
print myTestLink.whatArgs('createTestPlan')

print ""
print "Number of Projects in TestLink: %s " % myTestLink.countProjects()
print "Number of Platforms (in TestPlans): %s " % myTestLink.countPlatforms()
print "Number of Builds : %s " % myTestLink.countBuilds()
print "Number of TestPlans : %s " % myTestLink.countTestPlans()
print "Number of TestSuites : %s " % myTestLink.countTestSuites()
print "Number of TestCases (in TestSuites): %s " % myTestLink.countTestCasesTS()
print "Number of TestCases (in TestPlans) : %s " % myTestLink.countTestCasesTP()
print ""


** Caso der algum erro tente os seguintes passos:
1. Cria o arquivo __init__.py no diretório dos seus arquivos;
2. Verifique a sua chave gerada, se for o caso gerar uma nova como admin;


3. Verifique a URL, que é o caminho do servidor xmlrpc dependendo da versão o caminho é diferente;
4. Verifique a Indentação do código.
5. Verifique versão do Python a versão compatível 2.7.8, com versões 3.3 tive problemas.

No Tutorial da API diz para criar as variáveis  de ambiente, no caso fiz processo pelo Windows não funcionou como esperado, então passei essas informações como parâmetro para a classe de conexão "TestLinkHelper" e funcionou bem, assim não precisa configurar a variável de Ambiente no Windows, agora é feito direto no código.

# precondition a)
# SERVER_URL and KEY are defined in environment
# TESTLINK_API_PYTHON_SERVER_URL=http://YOURSERVER/testlink/lib/api/xmlrpc.php
# TESTLINK_API_PYTHON_DEVKEY=7ec252ab966ce88fd92c25d08635672b
#
# alternative precondition b)
# SERVEUR_URL and KEY are defined as command line arguments
# python TestLinkExample.py --server_url http://YOURSERVER/testlink/lib/api/xmlrpc.php
# --devKey 7ec252ab966ce88fd92c25d08635672b
#
# ATTENTION: With TestLink 1.9.7, cause of the new REST API, the SERVER_URL
# has changed from
# (old) http://YOURSERVER/testlink/lib/api/xmlrpc.php
# to
# (new) http://YOURSERVER/testlink/lib/api/xmlrpc/v1/xmlrpc.php



terça-feira, 7 de janeiro de 2014

Instalando o Selenium no Python na plataforma Windows.

Para instalar o selenium dentro do python para executar os script do selenium pelo python siga os passos abaixo.

1. Instalar o Python 2.7.xx
2. Instalar o setuptools do python:  https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20
3. Instalar o PIP:  https://sites.google.com/site/pydatalog/python/pip-for-windows
4. Digite o comando abaixo sem aspas no prompt do windows, na pasta C:\Python27\Scripts>
   "pip install -U selenium"
5. Selenium instalado no Python execute um script selenium para testar.

Pode criar um .bat com o comando pra executar o script selenium:

C:\Python27\python.exe C:\Scripts\teste.py


Insira no Arquivo teste.py as linhas de código abaixo e execute o .bat criado, exemplo:

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_search_in_python_org(self):
        driver = self.driver
        driver.get("http://www.python.org")
        self.assertIn("Python", driver.title)
        elem = driver.find_element_by_name("q")
        elem.send_keys("selenium")
        elem.send_keys(Keys.RETURN)
        self.assertIn("Google", driver.title)

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()


Dica: Quando o browser é atualizado o Firefox, é necessário atualizar novamente o selenium, executando o comando "pip install -U selenium".