{"id":760,"date":"2020-03-23T10:44:40","date_gmt":"2020-03-23T13:44:40","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=760"},"modified":"2020-03-23T10:46:15","modified_gmt":"2020-03-23T13:46:15","slug":"tdd-com-python-3","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/","title":{"rendered":"TDD com Python #3"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#Usando_um_Teste_Funcional_para_Escopo_Minimo\" >Usando um Teste Funcional para\nEscopo M\u00ednimo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#Viable_App\" >Viable App<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#Terminologia\" >Terminologia:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#Vamos_Fazer_Alguns_Comentarios%E2%80%A6\" >Vamos Fazer Alguns Coment\u00e1rios&#8230;<\/a><\/li><\/ul><\/nav><\/div>\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Usando_um_Teste_Funcional_para_Escopo_Minimo\"><\/span><strong>Usando um Teste Funcional para\nEscopo M\u00ednimo<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Viable_App\"><\/span><strong>Viable App<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Testes que utilizam Selenium\ns\u00e3o feitos em um navegador real, ent\u00e3o vamos ver como as fun\u00e7\u00f5es de aplica\u00e7\u00f5es s\u00e3o\nvistas na vis\u00e3o do usu\u00e1rio. Isto que chamamos de testes funcionais (TF).<\/p>\n\n\n\n<p>Isso significa que um TF pode ser uma esp\u00e9cie de especifica\u00e7\u00e3o da sua aplica\u00e7\u00e3o. Isso costuma-se chamar de User Story, isso \u00e9 como o usu\u00e1rio trabalha com um recurso particular e como o app deveria responder.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Terminologia\"><\/span><strong>Terminologia:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Teste Funcional == Teste\nAceit\u00e1vel = Teste de Ponta a Ponta<\/p>\n\n\n\n<p>Podemos chamar de testes funcionais, algumas pessoas preferem chamar de testes aceit\u00e1veis, ou teste de ponta a ponta.<\/p>\n\n\n\n<p>O ponto principal desse tipo\nde teste \u00e9 ver como todas as fun\u00e7\u00f5es da aplica\u00e7\u00e3o responde. Outro termo \u00e9 a\ncaixa preta de teste, dessa parte n\u00e3o sabemos de nada porque n\u00e3o sabemos como o\nsistema funciona internamente.<\/p>\n\n\n\n<p>TFs deveriam ser uma hist\u00f3ria\nque qualquer pessoa pudesse ler e entender. N\u00f3s podemos fazer isso por meio de\ncoment\u00e1rios no c\u00f3digo.<\/p>\n\n\n\n<p>Quando criamos um TF, n\u00f3s\npodemos escrever coment\u00e1rios primeiros, para capturar o ponto principal da User\nStory.<\/p>\n\n\n\n<p>Sendo assim, fica leg\u00edvel para\ntodos e mais f\u00e1cil para discutir funcionalidades e recursos do seu app.<\/p>\n\n\n\n<p>TDD e metodologia \u00e1gil de\nsoftware muitas vezes trabalham juntas, e produzem o que se chama o aplicativo\nm\u00ednimo vi\u00e1vel.<\/p>\n\n\n\n<p>Qual \u00e9 a coisa mais simples\nque podemos construir e ainda ser \u00fatil? Vamos construir isso, para podemos\ntestar o mais r\u00e1pido poss\u00edvel.<\/p>\n\n\n\n<p>Um m\u00ednimo vi\u00e1vel \u00e9 um to-do\nlist onde o usu\u00e1rio entra com tarefas que desejam ser realizadas e que o lembre\nna pr\u00f3xima visita.<\/p>\n\n\n\n<p>Crie um arquivo com o nome funcional_tests.py com o seguinte c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from selenium import webdriver\nbrowser = webdriver.Firefox()\n# Edith ouviu falar sobre um novo aplicativo de tarefas online, \u00e9 muito legal. Ela vai\n# Ela acessa a p\u00e1gina incial\nbrowser.get('http:\/\/localhost:8000')\n# Ela observa o t\u00edtulo da p\u00e1gina escrito to-do lists\nassert 'To-Do' in browser.title\n# Ela \u00e9 convidada a inserir um item de tarefa imediatamente\n# Ela digita \"Comprar penas de pav\u00e3o\" em uma caixa de texto (\u00e9 o hobby de Edith\n# est\u00e1 amarrando iscas de pesca com mosca)\n# Quando ela pressiona enter, a p\u00e1gina \u00e9 atualizada e agora a p\u00e1gina lista\n# \"1: Comprar penas de pav\u00e3o\" como um item de uma lista de tarefas\n# Ainda h\u00e1 uma caixa de texto convidando-a para adicionar outro item. Ela\n# digita \"Use penas de pav\u00e3o para fazer uma mosca\" (Edith \u00e9 muito met\u00f3dica)\n# A p\u00e1gina \u00e9 atualizada novamente e agora mostra os dois itens em sua lista\n# Edith se pergunta se o site se lembrar\u00e1 de sua lista. Ent\u00e3o ela v\u00ea\n# que o site gerou um URL exclusivo para ela - h\u00e1 alguns\n# texto explicativo para esse efeito.\n# Ela visita essa URL - sua lista de tarefas ainda est\u00e1 l\u00e1.\n# Satisfeita, ela volta a dormir\nbrowser.quit()<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Vamos_Fazer_Alguns_Comentarios%E2%80%A6\"><\/span><strong>Vamos Fazer Alguns Coment\u00e1rios&#8230;<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Quando comecei a programar\nfazia coment\u00e1rios por toda a parte do meu c\u00f3digo. A\u00ed um dia um colega disse-me\nque coment\u00e1rios s\u00e3o mentirosos. Eu fiquei surpreso. E respondi: \u201cMas aprendi que\ncoment\u00e1rio \u00e9 uma boa pr\u00e1tica. N\u00e3o \u00e9?\u201d<\/p>\n\n\n\n<p>Com certeza ele exagerou na\nresposta, mas na verdade ele quis dizer que n\u00e3o faz sentido colocar coment\u00e1rios\nonde o pr\u00f3prio c\u00f3digo j\u00e1 diz o que est\u00e1 sendo feito. E com certeza h\u00e1 locais\nque um coment\u00e1rio \u00e9 bem-vindo.<\/p>\n\n\n\n<p>#incremente wibble de 1 em 1<\/p>\n\n\n\n<p>wibble += 1<\/p>\n\n\n\n<p>E quando se diz que coment\u00e1rio\ns\u00e3o mentirosos \u00e9 porque quando se atualiza o c\u00f3digo ningu\u00e9m atualiza os\ncoment\u00e1rios.<\/p>\n\n\n\n<p>O ideal \u00e9 se esfor\u00e7ar para\ntornar seu c\u00f3digo t\u00e3o leg\u00edvel, para usar bons nomes de vari\u00e1veis e nomes de\nfun\u00e7\u00f5es, e estrutur\u00e1-lo t\u00e3o bem que voc\u00ea n\u00e3o precisa mais comentar para\nexplicar o que o c\u00f3digo est\u00e1 fazendo. Apenas alguns aqui e ali para explicar o\nporqu\u00ea.<\/p>\n\n\n\n<p>Existem outros lugares onde os\ncoment\u00e1rios s\u00e3o muito \u00fateis. Veremos que o Django usa muito nos arquivos que\ngera para usarmos como uma maneira de sugerir bits \u00fateis de sua API. <\/p>\n\n\n\n<p>E, \u00e9 claro, usamos coment\u00e1rios\npara explicar a hist\u00f3ria do usu\u00e1rio em nossa funcionalidade testes &#8211;\nfor\u00e7ando-nos a fazer uma hist\u00f3ria coerente com o teste, garante que estamos sempre\ntestando do ponto de vista do usu\u00e1rio.<\/p>\n\n\n\n<p>Voc\u00ea notar\u00e1 que, al\u00e9m de\nescrever o teste como coment\u00e1rios, estou procurando a palavra &#8220;To-Do&#8221;\nem vez de &#8220;Django&#8221;. Isso significa que esperamos que o teste falhe.\nVamos tentar execut\u00e1-lo.<\/p>\n\n\n\n<p>Primeiro inicie o servidor.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"259\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2.png\" alt=\"\" class=\"wp-image-761\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2.png 566w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2-300x137.png 300w\" sizes=\"auto, (max-width: 566px) 100vw, 566px\" \/><\/figure><\/div>\n\n\n\n<p>Lembre-se de que o arquivo <a href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/geckodriver.zip\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"geckodriver.exe (abre num novo separador)\">geckodriver.exe<\/a> deve est\u00e1 na pasta do teste.<\/p>\n\n\n\n<p>Vamos executar o teste, execute:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"208\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-3.png\" alt=\"\" class=\"wp-image-763\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-3.png 441w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-3-300x141.png 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure><\/div>\n\n\n\n<p>\u00c9 o que chamamos de falha esperada, que na verdade \u00e9 uma boa not\u00edcia n\u00e3o t\u00e3o boa quanto um teste que passa, mas pelo menos est\u00e1 falhando pelo motivo certo; podemos ter certeza de que escrevemos o teste corretamente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Usando um Teste Funcional para Escopo M\u00ednimo Viable App Testes que utilizam Selenium s\u00e3o feitos em um navegador real, ent\u00e3o vamos ver como as fun\u00e7\u00f5es de aplica\u00e7\u00f5es s\u00e3o vistas na vis\u00e3o do usu\u00e1rio. Isto que chamamos de testes funcionais (TF). Isso significa que um TF pode ser uma esp\u00e9cie de especifica\u00e7\u00e3o da sua aplica\u00e7\u00e3o. Isso [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[],"class_list":["post-760","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tdd"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.5 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>TDD com Python #3 - Viciados em Aprender<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TDD com Python #3\" \/>\n<meta property=\"og:description\" content=\"Usando um Teste Funcional para Escopo M\u00ednimo Viable App Testes que utilizam Selenium s\u00e3o feitos em um navegador real, ent\u00e3o vamos ver como as fun\u00e7\u00f5es de aplica\u00e7\u00f5es s\u00e3o vistas na vis\u00e3o do usu\u00e1rio. Isto que chamamos de testes funcionais (TF). Isso significa que um TF pode ser uma esp\u00e9cie de especifica\u00e7\u00e3o da sua aplica\u00e7\u00e3o. Isso [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Viciados em Aprender\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-23T13:44:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-23T13:46:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/TDD_Graphic.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"996\" \/>\n\t<meta property=\"og:image:height\" content=\"662\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"blackzig\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"blackzig\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/\"},\"author\":{\"name\":\"blackzig\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"headline\":\"TDD com Python #3\",\"datePublished\":\"2020-03-23T13:44:40+00:00\",\"dateModified\":\"2020-03-23T13:46:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/\"},\"wordCount\":656,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"image\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/TDD_Graphic.jpg\",\"articleSection\":[\"TDD\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/\",\"name\":\"TDD com Python #3 - Viciados em Aprender\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/TDD_Graphic.jpg\",\"datePublished\":\"2020-03-23T13:44:40+00:00\",\"dateModified\":\"2020-03-23T13:46:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/TDD_Graphic.jpg\",\"contentUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/TDD_Graphic.jpg\",\"width\":996,\"height\":662},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/tdd-com-python-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TDD com Python #3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/\",\"name\":\"Viciados em Aprender\",\"description\":\"Queremos aprender tudo o que for poss\u00edvel nesta vida.\",\"publisher\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\",\"name\":\"blackzig\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"contentUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"blackzig\"},\"logo\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.micheladrianomedeiros.com.br\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TDD com Python #3 - Viciados em Aprender","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/","og_locale":"pt_PT","og_type":"article","og_title":"TDD com Python #3","og_description":"Usando um Teste Funcional para Escopo M\u00ednimo Viable App Testes que utilizam Selenium s\u00e3o feitos em um navegador real, ent\u00e3o vamos ver como as fun\u00e7\u00f5es de aplica\u00e7\u00f5es s\u00e3o vistas na vis\u00e3o do usu\u00e1rio. Isto que chamamos de testes funcionais (TF). Isso significa que um TF pode ser uma esp\u00e9cie de especifica\u00e7\u00e3o da sua aplica\u00e7\u00e3o. Isso [&hellip;]","og_url":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/","og_site_name":"Viciados em Aprender","article_published_time":"2020-03-23T13:44:40+00:00","article_modified_time":"2020-03-23T13:46:15+00:00","og_image":[{"width":996,"height":662,"url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/TDD_Graphic.jpg","type":"image\/jpeg"}],"author":"blackzig","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"blackzig","Tempo estimado de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#article","isPartOf":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/"},"author":{"name":"blackzig","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"headline":"TDD com Python #3","datePublished":"2020-03-23T13:44:40+00:00","dateModified":"2020-03-23T13:46:15+00:00","mainEntityOfPage":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/"},"wordCount":656,"commentCount":0,"publisher":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"image":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#primaryimage"},"thumbnailUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/TDD_Graphic.jpg","articleSection":["TDD"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/","name":"TDD com Python #3 - Viciados em Aprender","isPartOf":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#primaryimage"},"image":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#primaryimage"},"thumbnailUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/TDD_Graphic.jpg","datePublished":"2020-03-23T13:44:40+00:00","dateModified":"2020-03-23T13:46:15+00:00","breadcrumb":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#primaryimage","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/TDD_Graphic.jpg","contentUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/TDD_Graphic.jpg","width":996,"height":662},{"@type":"BreadcrumbList","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/tdd-com-python-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/micheladrianomedeiros.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"TDD com Python #3"}]},{"@type":"WebSite","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#website","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/","name":"Viciados em Aprender","description":"Queremos aprender tudo o que for poss\u00edvel nesta vida.","publisher":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/micheladrianomedeiros.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":["Person","Organization"],"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e","name":"blackzig","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","contentUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","width":1920,"height":1080,"caption":"blackzig"},"logo":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg"},"sameAs":["http:\/\/www.micheladrianomedeiros.com.br\/"]}]}},"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=760"}],"version-history":[{"count":2,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/760\/revisions"}],"predecessor-version":[{"id":765,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/760\/revisions\/765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/210"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}