Uso de teste dirigido por teste (TDD) Problema: Calcular o enésimo valor da serie de fibonnaci 0, 1, 1, 2, 3, 5, 8, 13 ou seja f(0)=0, f(1)=1, f(2)=1,f(3)=2,...)
Solução: o numero seguinte é o numero atual + o numero anterior Definição matemática F(n+1)=F(n)+F(n-1) valores iniciais F0=0 F1=1 F2=1 F{n}= { 0, se n=0 1, se n=1 Fn-1+Fn-2, para outros casos }

In [1]:
#definição do 1o teste - fib(0)=0  - dirigir o teste apartir de um valor dado e valor esperado
#def testFibonacci(): 
#    assertEqual(0, fib(0))  #assertEquals é um método que recebe como parâmetro o resultado do método que está sendo testado
#                            #e o resultado esperado pelo desenvolvedor caso o método testado esteja correto ou seja:
#                            #assertEqual (resultado esperado da execução do metodo a ser testado,metodo a ser testatdo) se for


#execução do teste
print (fib(0)) 
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-4b34db67b21e> in <module>()
      7 
      8 #execução do teste
----> 9 print (fib(0))

NameError: name 'fib' is not defined
In [2]:
#definição do 1o teste - fib(0)=0  - dirigir o teste apartir de um valor dado e valor esperado
#def testFibonacci(): 
#    assertEqual(0, fib(0))  #assertEquals é um método que recebe como parâmetro o resultado do método que está sendo testado
#                            #e o resultado esperado pelo desenvolvedor caso o método testado esteja correto ou seja:
#                            #assertEqual (resultado esperado da execução do metodo a ser testado,metodo a ser testatdo) se for
def fib(n):
    return 0

#execução do teste
print (fib1(0)) 
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-10088f3bf5f9> in <module>()
      8 
      9 #execução do teste
---> 10 print (fib1(0))

NameError: name 'fib1' is not defined
In [3]:
#definição do 2o teste fib(1)=1
#def testFibonacci():    
#    assertEqual(1, fib(1))  
def fib(n):
    return 1

#execução do teste
print (fib(1))
1
In [4]:
#definição do 3o teste fib(1)=1
#def testFibonacci():
#    assertEqual(1, fib(1))  
def fib(n):
    if (n==0): 
        return 0
    return 1

#execução do teste
print (fib(0),fib(1))
0 1
In [5]:
#definição do 3o teste - Fatorar a estrutura comum das asserções 
#dirigindo o teste a partir de uma tabela de entrada e valores esperados
#def testFibonacci():
#    cases={{0,0},{1,1}}
#    for i in range (cases.lenght):
#            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    return 1

#execução do teste
print (fib(0),fib(1))        
    
0 1
In [6]:
#definiç
#ão do 4o teste - adicionar proximo caso
#def testFibonacci():
#    cases={{0,0},{1,1},{2,1}}
#    for i in range (cases.lenght):
#            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    return 1

#execução do teste
print (fib(0),fib(1),fib(2))        
0 1 1
In [7]:
#definição do 5o teste - adicionar proximo caso - opa errado fib(3)=2 e não 1
#def testFibonacci():
#    cases={{0,0},{1,1},{2,1},{3,2}}
#    for i in range (cases.lenght):
#            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    return 1

#execução do teste
print (fib(0),fib(1),fib(2),fib(3)) 
0 1 1 1
In [8]:
#definição do 6o teste - corrigindo anterior
def testFibonacci():
    cases={{0,0},{1,1},{2,1},{3,2}}
    for i in range (cases.lenght):
            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    if (n<=2): 
        return 1
    return 2

#execução do teste
print (fib(0),fib(1),fib(2),fib(3)) 
0 1 1 2
In [9]:
#definição do 7o teste - generalizando 2 quer dizer 1 + 1
def testFibonacci():
    cases={{0,0},{1,1},{2,1},{3,2}}
    for i in range (cases.lenght):
            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    if (n<=2): 
        return 1
    return 1+1

#execução do teste
print (fib(0),fib(1),fib(2),fib(3)) 
0 1 1 2
In [10]:
#definição do 8o teste - generalizando 1 + 1 quer dizer fib(n-1)+1
def testFibonacci():
    cases={{0,0},{1,1},{2,1},{3,2}}
    for i in range (cases.lenght):
            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    if (n<=2): 
        return 1
    return fib(n-1)+1

#execução do teste
print (fib(0),fib(1),fib(2),fib(3)) 
0 1 1 2
In [11]:
#definição do 9o teste - generalizando 2 quer dizer fib(n-1)+fib(n-2)
def testFibonacci():
    cases={{0,0},{1,1},{2,1},{3,2}}
    for i in range (cases.lenght):
            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    if (n<=2): 
        return 1
    return fib(n-1)+fib(n-2)

#execução do teste
print (fib(0),fib(1),fib(2),fib(3)) 
0 1 1 2
In [12]:
#definição do 10o teste - limpando e estreitando a 2a condição testando proximo caso fib(4)
#def testFibonacci():
#    cases={{0,0},{1,1},{2,1},{3,2}}
#    for i in range (cases.lenght):
#            assertEqual(cases[i][1], fib(cases[i][0]))
            
def fib(n):
    if (n==0): 
        return 0
    if (n==1): 
        return 1
    return fib(n-1)+fib(n-2)

#execução do teste
print (fib(0),fib(1),fib(2),fib(3),fib(4)) 
0 1 1 2 3
In [13]:
#definição do 11o teste - limpando e estreitando a 2a condição testando proximo caso fib(5)e fib(6)

def fib(n):
    if (n==0): 
        return 0
    if (n==1): 
        return 1
    return fib(n-1)+fib(n-2)

#execução do teste
print (fib(0),fib(1),fib(2),fib(3),fib(4),fib(5),fib(6)) 
0 1 1 2 3 5 8
In [ ]:
 
In [14]:
from splinter import Browser

with Browser() as browser:
    # Visit URL
    url = "http://www.google.com"
    browser.visit(url)
    browser.fill('q', 'splinter - python acceptance testing for web applications')
    # Find and click the 'search' button
    button = browser.find_by_name('btnG')
    # Interact with elements
    button.click()
    if browser.is_text_present('splinter.cobrateam.info'):
        print ("Yes, the official website was found!")
    else:
        print ("No, it wasn't found... We need to improve our SEO techniques")
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-14-4657dbad0dce> in <module>()
----> 1 from splinter import Browser
      2 
      3 with Browser() as browser:
      4     # Visit URL
      5     url = "http://www.google.com"

ModuleNotFoundError: No module named 'splinter'
In [ ]: