Top 8 Python Testing Frameworks v roce 2021

Pokud jste si říkali: „Hmm… jakým programovacím jazykem bych měl začít svou cestu k testování?“. – Python je vaší odpovědí. Není však jen pro začátečníky! V nedávném průzkumu, který jsem provedl na LinkedIn, můžeme vidět, že dokonce i mezi zkušenými programátory hlasovalo téměř 35 % pro to, že Python je jejich nejoblíbenějším programovacím jazykem (i když ne příliš daleko před všemi oblíbenou Javou, která se umístila na 2. místě s 32 %).

V průběhu let Python skutečně získává na popularitě jak mezi testery, tak mezi vývojáři a je to nejrychleji rostoucí programovací jazyk (jak můžeme vidět v grafu trendů Stack Overflow níže), a všichni víme, co to znamená… Popularita = relevance!

Na konci tohoto článku je mým cílem pomoci vám zjistit, jak mocný je programovací jazyk Python a který testovací framework Pythonu se nejlépe hodí pro potřeby vašeho projektu.

Co je na Pythonu tak skvělého pro automatizaci testování?

Python je programovací jazyk s otevřeným zdrojovým kódem, který byl poprvé vydán v roce 1991 se záměrem poskytnout intuitivní, jednoduchý, lidsky čitelný, elegantní a méně komplikovaný programovací jazyk pro práci. A pokud jde o testování, jsou takové vlastnosti nutností, zvláště když máme v týmu manuální testery (kteří nemusí nutně mít programátorské dovednosti), kteří nyní přecházejí na automatizaci a mohou využívat rychlou křivku učení jazyka Python k rychlému psaní skriptů.

Existuje poměrně dost důvodů, proč popularita jazyka Python v oblasti automatizace testů roste a proč je považován za jednu z nejlepších voleb pro automatizaci testů. Mezi těmito důvody najdete např: Python je zen (19 hlavních principů filozofie návrhu Pythonu), je přátelský pro začátečníky, ale výkonný i pro experty, je objektově orientovaný i funkční, má bohatou knihovnu balíčků pro testování, celosvětově silnou komunitu a mnoho dalších! Doporučuji si o něm přečíst více na úžasném blogu AutomationPanda.

Vhodný testovací framework pro Python

S rostoucím používáním Pythonu roste i obliba testovacích frameworků založených na Pythonu. Zpočátku může být trochu matoucí vědět, který z nepřeberného množství nástrojů si vybrat, protože každý z nich má svá pro a proti. Jak již bylo řečeno, každý projekt a každá organizace má jiné požadavky a omezení, a proto je při výběru nástroje, který pro nás bude nejvhodnější, musíme vzít v úvahu všechny. Doporučuji přečíst si tyto skvělé články o tom, jak vybrat ten správný nástroj pro vás:

  1. Jak vybrat správný nástroj pro automatizaci testování
  2. Jak vybrat nejlepší nástroj – proces výzkumu
  3. Kritéria pro výběr správných nástrojů pro funkční testování

A samozřejmě – proč existují seznamy kladů a záporů, když ne proto, aby nám pomohly získat další vodítka o našich oblíbených nástrojích, a to na jednom místě! 😉 Pojďme se tedy ponořit do hloubky 8 nejlepších frameworků pro testování v jazyce Python a prozkoumat jejich výhody i nedostatky, abyste byli o to blíže výběru ideálního frameworku pro testování v jazyce Python pro vaše potřeby.

Výhody a nevýhody 8 nejlepších frameworků pro testování v jazyce Python

  1. Robot Framework
  2. Pytest
  3. TestProject
  4. PyUnit (Unittest)
  5. Nose2
  6. Behave
  7. .

  8. Lettuce
  9. Testify
  10. Závěr

Robot Framework (RF)

Robot Framework (RF) je open source testovací automatizační framework pro akceptační testování, vývoj řízený akceptačními testy (ATDD) a automatizaci robotických procesů (RPA). Jeho jádro je implementováno v jazyce Python, ale může běžet také v jazycích Jython (javovská implementace jazyka Python) a IronPython (framework Python pro .NET). Pro jeho spuštění je třeba nainstalovat Python verze 2.7.14 nebo vyšší.

Pros

  • Založen na přístupu KDT (Keyword-driven testing), což nám umožňuje snadno vytvářet testovací případy pomocí lidsky čitelných klíčových slov (nejsou nutné žádné zkušenosti s kódováním).
  • Podporuje všechny operační systémy (Windows, Linux nebo MacOS) a všechny aplikace (webové, mobilní a desktopové aplikace).
  • Poskytuje přehledné a uživatelsky přívětivé údaje v HTML zprávách (včetně snímků obrazovky).
  • Bohatý ekosystém s množstvím rozhraní API, což z něj činí vysoce rozšiřitelný framework a umožňuje integraci s jakýmkoli dalším nástrojem třetí strany.
  • Velká podpora komunity a online zdroje.

Nevýhody

  • Paralelní testování není podporováno z výroby, ale lze ho dosáhnout pomocí Selenium Grid nebo pomocí Pabot (paralelní spouštěč pro RF).
  • V dobrém i zlém vás nutí pracovat podle předem definované metodiky, Počáteční křivka učení může být pro nováčky o něco delší než obvykle
  • Vytváření obecných klíčových slov může trvat déle než pouhé psaní kódovaných testů
  • Není snadné přizpůsobit sestavy.
  • Nemá skutečnou konstrukci if/else, ale existuje několik způsobů, jak dosáhnout stejného efektu (jak lze prozkoumat v jejich oficiální dokumentaci)

Závěr: Pokud chcete implementovat rámcový přístup založený na klíčových slovech, který umožní manuálním testerům a obchodním analytikům vytvářet automatizační testy, je pro vás řešením RF, který poskytuje řadu rozšíření & knihoven a snadno se používá. Pokud si však dáváte pozor na vývoj složitých scénářů, protože budete muset provést některé úpravy, které nejsou ve frameworku zabudovány.

Pytest

Pytest je open-source testovací framework, který je pravděpodobně jedním z nejpoužívanějších frameworků pro testování v jazyce Python. Pytest podporuje jednotkové testování, funkční testování a také testování API. K jeho spuštění budete potřebovat Python verze 3.5 nebo vyšší.

Pros

  • Umožňuje vytvářet kompaktní a jednoduché testovací sady.
  • Je vysoce rozšiřitelný pomocí zásuvných modulů, jako jsou: pytest-randomly, pytest-cov, pytest-django, pytest-bdd.
  • Do projektu můžete také přidat zásuvný modul pytest html pro tisk HTML sestav pomocí jedné jednoduché volby příkazového řádku.
  • Může spouštět testy paralelně pomocí zásuvného modulu pytest-xdist. I o něm si můžete přečíst více zde.
  • Má velmi početnou komunitu.
  • Podporuje fixtures, které vám pomohou pokrýt všechny kombinace parametrů bez přepisování testovacích případů a jsou skvělým způsobem, jak spravovat kontext mezi jednotlivými kroky.

Nevýhody

  • Kompatibilita není pro Pytest klíčová, protože ačkoli můžete snadno psát testovací případy pomocí Pytestu, nebudete je moci použít v rámci žádného jiného testovacího rámce kvůli použití jedinečných rutin Pytestu.
Sečteno a podtrženo:

TestProject

TestProject je 100% ZDARMA kompletní automatizační framework s cloudovými sestavami. Pomocí TestProject můžete snadno vyvíjet automatizaci testů pro mobilní, webové nebo obecné účely pomocí open source SDK Python. Podporuje Python verze 3.6 nebo vyšší a podporuje rámce Pytest i Unittest. TestProject obsahuje všechny potřebné závislosti jako součást jediného multiplatformního spustitelného agenta (Pro začátek se můžete podívat na záznam tohoto webináře).

Pros

  • Jediný spustitelný agent, který obsahuje všechny knihovny třetích stran potřebné pro spouštění a vývoj automatizace testů pro mobilní, webové a obecné testy.
  • Zdarma Automatické cloudové reporty ve formátu HTML/PDF (včetně snímků obrazovky).
  • Historie provádění přístupná přes RESTful API.
  • Vždy aktuální s nejnovějšími a stabilními verzemi ovladačů Selenium/Appium.
  • Jediné SDK pro webové, Android, iOS a generické testy.
  • Vestavěný testovací runner a možnosti reportování.
  • Podpora různých platforem pro Mac, Windows, Linux a Docker.
  • Velká komunita a podpora: fórum, blog a vestavěný živý chat.

Nevýhody

  • Agent může spouštět testy po jednom testu, pro paralelní testování byste tedy museli použít Docker Agenty.
  • Reporty jsou k dispozici pouze na cloudu TestProject, pro lokální uložení si budete muset stáhnout report ve formátu PDF nebo použít RESTful API.
  • Agent potřebuje pro spuštění/vykonání testů připojení k internetu.

Bottom line:

PyUnit (Unittest)

PyUnit (Unittest) je framework pro jednotkové testování pro Python, který byl inspirován JUnitem. Je to výchozí framework pro testování v Pythonu, který se dodává jako součást balíčku Python, a proto s ním většina vývojářů začíná své testování.

Pros

  • Jelikož je součástí standardní knihovny Pythonu, není třeba instalovat žádné další moduly – dodává se jako součást balíčku Python.
  • Nabízí jednoduché a flexibilní provádění testovacích případů.
  • Rychlé generování testovacích zpráv, a to jak zpráv XML, tak unittest-sml-reporting.

Nevýhody

  • Záměr testovacího kódu je někdy nejasný, protože podporuje abstrakci.
  • Vyžaduje obrovské množství kotelního kódu.
  • Protože vychází z Junitu, používá se metoda pojmenování camelCase namísto pojmenovací konvence Pythonu snake_case.
Sečteno a podtrženo:

Nose2

Nose2 je nástupcem Nose a je to v podstatě PyUnit (Unittest), ale s doplňky. Nose2 rozšiřuje PyUnit nad rámec jeho funkčnosti o různé zásuvné moduly, které přidávají podporu pro provádění testů, zjišťování testů, dekorátory, fixtures, parametrizaci atd.

Pros

  • Snadno se s ním začíná, protože rozšiřuje rámec PyUnit (Unittest), který je dodáván jako součást knihovny Pythonu.
  • Obsahuje velké množství vestavěných zásuvných modulů, které mohou urychlit a usnadnit vaše testování.
  • Umožňuje paralelní testování pomocí zásuvného modulu mp.
  • Sbírá testy automaticky, pokud dodržíte několik jednoduchých pokynů pro uspořádání knihovny a testovacího kódu.

Nevýhody

  • Nedostatek rozsáhlé dokumentace, což vás může brzdit, pokud teprve začínáte.
  • Není tak aktivně udržován na rozdíl od jiných frameworků.

Dole:

Behave

Behave je jeden z nejpopulárnějších testovacích frameworků pro Python BDD (behavior-driven development). Ačkoli není oficiálně součástí projektu Cucumber, funguje velmi podobně jako frameworky Cucumber.

Pros

  • Umožňuje psát testovací případy v čitelném jazyce, což vede ke snadné spolupráci napříč týmy s podobnými funkcemi.
  • K dispozici je velké množství dokumentace a podpory, která pomůže v začátcích.
  • Plně podporuje jazyk Gherkin – tvorba feature souborů tedy nevyžaduje žádné technické znalosti.
  • Má integrace s jazyky Django a Flask.

Nevýhody

  • Není zde podpora paralelního spouštění.
  • Pouze pro testování černých skříněk.

Dole: Pokud se váš tým řídí přístupem BDD, máte předchozí znalosti BDD (např. Cucumber, SpecFlow atd.) a hledáte testování černých skříněk – určitě byste měli vyzkoušet Behave. Měli byste také prozkoumat další BDD frameworky pro Python, jako např: Pytest-bdd, Lettuce (bude popsán níže), Radish a další v tomto článku o srovnání BDD frameworků pro testování v Pythonu. Pokud potřebujete víc než jen testování černé skříňky, měli byste se poohlédnout jinde.

Lettuce

Lettuce je další framework BDD pro Python a je založen na Cucumberu. Vyžaduje Python 2.7.14 nebo vyšší.

Pros

  • Podporuje jazyk Gherkin, a tak umožňuje i netechnickým členům týmu snadno vytvářet testy pomocí přirozeného jazyka.
  • Podobně jako Behave se používá hlavně pro black-box testování, ale lze jej použít pro více typů testování. Lettuce například dokáže testovat různá chování a interakce serveru a databáze.

Nevýhody

  • Nedisponuje některými bohatými funkcemi jiných frameworků, takže je vhodnější pro malé projekty.
  • Jeho podpora a dokumentace se nezdají být udržovány.
  • Vyžaduje specializovanou komunikaci mezi všemi zúčastněnými stranami projektu: dev, QA a manažery, aby byla implementace úspěšná.

Dole:

Testify

Testify je navržen tak, aby nahradil běžné frameworky Unittest a Nose a má pokročilé funkce oproti standardnímu Unittestu.

Pros

  • Používá se pro unit testy, integrační testy a systémové testy.
  • Pro ty, kteří znají Unittest, je Testify velmi snadné začít používat.
  • Má rozsáhlé zásuvné moduly.
  • Podobně jako Nose2 umožňuje Testify objevování testů.
  • Jednoduchá syntaxe metody fixture.

Nevýhody

  • Nedostatek rozsáhlé dokumentace, takže začátečníci možná budou muset investovat do hledání příslušných zdrojů.
  • Paralelní testování není snadné dosáhnout.

Dole:

Závěr

Dospěli jsme ke konci tohoto srovnávacího seznamu frameworků pro testování v Pythonu a nyní je čas vybrat ten, který nejvíce vyhovuje vašim požadavkům.

Hledáte spíše BDD přístup? Jde vám o jednotkové testování, nebo spíše o funkční testování? Má váš tým technické nebo programátorské zkušenosti, nebo se skládá převážně ze začátečníků? Tyto a mnohé další otázky je třeba vzít v úvahu při rozhodování. Každý z výše uvedených rámců má své výhody i nevýhody a neexistuje něco jako dobrý nebo špatný, ale spíše vhodný. Vhodné pro vaše vlastní potřeby a požadavky na produkt.

Doufám, že vám tento článek dokázal pomoci nejen v pochopení toho, jak skvělý je Python pro automatizační testování, ale také vám pomůže na vaší cestě za snadným testováním v Pythonu!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.