Skip to content

Instantly share code, notes, and snippets.

@marcelcaraciolo
Created September 13, 2010 04:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save marcelcaraciolo/576783 to your computer and use it in GitHub Desktop.
Save marcelcaraciolo/576783 to your computer and use it in GitHub Desktop.
import unittest
from datetime import date, timedelta
'''
Vaga para Desenvolvedor Web na empresa Orygens
Script inspirado http://github.com/praekelt/careers/raw/master/software_engineer.py
'''
class WebDeveloperTestCase(unittest.TestCase):
"""
Se voce passar neste teste entao provavelmente nos estamos procurando voce.
"""
def test_experiencia(self):
""" 2 anos de experiencia com desenvolvimento de software. """
assert candidato.results['comecou_a_programar'] <= anos_atras(2)
def test_python_experiencia(self):
""" 1 ano de experiencia com Python """
assert candidato.results['comecou_programar_python'] <= anos_atras(1)
def test_web_experiencia(self):
""" Experiencia Solida com Frameworks /Web """
assert candidato.results['web_experiencia'] >= 6
def test_django_experiencia(self):
""" Experiencia Solida com Frameworks Django"""
assert candidato.results['django_experiencia'] >= 6
def test_js_experiencia(self):
""" Experiencia Solida com JavaScript/Jquery """
assert candidato.results['javascript_experiencia'] >= 5
def test_git_experiencia(self):
"""A palavra fork deveria fazer lembra-lo de codigo fonte e colaboracao"""
assert candidato.results['forks_nao_sao_para_comida'] == 'sim'
def test_scrum(self):
"""Sabe ou aprecia as artes de metodologias ageis"""
assert candidato.results['usa_metodologia_agil'] == 'sim'
def test_tdd(self):
"""Sabe ou aprecia as artes de tdd"""
assert True #Bonus
def test_linux(self):
"""Voce e familiar com os pinguims"""
assert candidato.results['linux'] == 'sim'
def test_open_source(self):
"""Voce tem projetos open-source (big plus)"""
assert True #Bonus
def test_cloud_experiencia(self):
"""A palavra nuvem deve faze-lo lembrar de computacao nas nuvens."""
assert candidato.results['nuvems_sao_para_chuvas'] == 'nao'
def test_independencia(self):
""" Voce eh feliz mesmo trabalhando em um ambiente livre sem supervisores no pe """
assert True # bonus
def test_linguagem_programacao(self):
""" Voce nao eh preso a uma linguagem/plataforma """
assert True #bonus
def prompt(question):
return raw_input("%s : " %question).strip()
def anos_atras(numero):
return date.today() - timedelta(days=numero * 365)
class Candidato(object):
def __init__(self):
self.results = {}
def entrevista(self):
for attribute in dir(self):
if attribute.startswith('ask'):
_,attribute_name = attribute.split("_",1)
attribute_function = getattr(self,attribute)
self.results[attribute_name] = attribute_function()
def ask_comecou_a_programar(self):
year = prompt("Em que ano voce comecou a programar ? (2008,2009, etc...)")
return date(year=int(year),month=1,day=1)
def ask_comecou_programar_python(self):
year = prompt("Em que ano voce comecou a programar Python ? (2008,2009, etc...)")
return date(year=int(year),month=1,day=1)
def ask_web_experiencia(self):
experience = prompt("Numa escala de 1 a 10, 1 equivale a nenhuma experiencia " \
"e 10 muito experiente, em que nivel voce se colocaria em" \
"experiencia com Web ?")
return int(experience)
def ask_django_experiencia(self):
experience = prompt("Numa escala de 1 a 10, 1 equivale a nenhuma experiencia " \
"e 10 muito experiente, em que nivel voce se colocaria em" \
"experiencia com Django ?")
return int(experience)
def ask_javascript_experiencia(self):
experience = prompt("Numa escala de 1 a 10, 1 equivale a nenhuma experiencia " \
"e 10 muito experiente, em que nivel voce se colocaria em" \
"experiencia com JavaScript/JQuery ?")
return int(experience)
def ask_nuvems_sao_para_chuvas(self):
return prompt("Nuvems te lembram primeiramente de chuva ? (sim ou nao)")
def ask_forks_nao_sao_para_comida(self):
return prompt("A palavra 'forks checkout push pull' se relacionam? (sim ou nao)")
def ask_usa_metodologia_agil(self):
return prompt("A palavra 'Poker' te lembra algo alem de jogo ? (sim ou nao)")
def ask_linux(self):
return prompt('Voce sabe se pinguins tem algo haver com sistemas operacionais ? (sim ou nao)')
def ask_open_source(self):
return prompt('Voce tem projetos open-source ?')
def ask_independencia(self):
return prompt('Voce curte trabalhar independente ?')
def ask_linguagem_programacao(self):
return prompt('Voce curte programar em mais de uma linguagem de programacao ?')
def ask_tdd(self):
return prompt('Voce curte desenvolvimento com testes ?')
class CandidatoTestProgram(unittest.TestProgram):
def runTests(self):
self.result = unittest.TextTestRunner().run(self.test)
if __name__ == '__main__':
candidato = Candidato()
candidato.entrevista()
test_program = CandidatoTestProgram()
print '\n\n'
if not test_program.result.wasSuccessful():
print 'Desculpe-me mas voce nao passou'
else:
print 'Opaaaa, voce passou! Agora o que fazer?'
print "1. Envie seu curriculo para jobs@orygens.com"
print "2. Se voce acreditar ser um bom candidato nos iremos entrar em contato."
print ""
print 'Atenciosamente, Orygens.com !'
@rodrigoalvesvieira
Copy link

Puts! Que show!

@fernandobrito
Copy link

Muito interessante, mas contém alguns erros de formatação e de escrita.

@diofeher
Copy link

Po, ficou maneiro! hehe

@felipebueno
Copy link

Muito bacana divulgar a vaga desta maneira. Eu rodei aqui mas, infelizmente, não tenho a experiência exigida rss.

@joaodubas
Copy link

Demais... Grande forma de executar uma entrevista!

@diegoguimaraes
Copy link

muito bem bolado!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment