Top 8 Python Testing Frameworks in 2021

Als je bij jezelf hebt zitten denken: “Hmm… met welke programmeertaal moet ik mijn testreis beginnen?” – Python is je antwoord. Maar het is niet alleen voor beginners! In een recent onderzoek dat ik op LinkedIn heb gedaan, kunnen we zien dat zelfs onder ervaren programmeurs, bijna 35% heeft gestemd dat Python hun meest favoriete programmeertaal is (hoewel niet te ver voor de all-time favoriet Java, die op de 2e plaats kwam met 32%).

Over de jaren heen heeft Python inderdaad aan momentum gewonnen onder zowel testers als ontwikkelaars en het is de snelst groeiende programmeertaal die er is (zoals we kunnen zien in de Stack Overflow Trends grafiek hieronder), en we weten allemaal wat dat betekent … Populariteit = relevantie!

Aan het eind van dit artikel wil ik je laten inzien hoe krachtig de programmeertaal Python is en welk Python-testframework het beste bij jouw projectbehoeften past.

Wat is er zo goed aan Python voor testautomatisering?

Python is een open-source programmeertaal die in 1991 voor het eerst werd uitgebracht met de bedoeling een intuïtieve, eenvoudige, menselijk leesbare, elegante en minder onoverzichtelijke programmeertaal te bieden om mee te werken. En als het op testen aankomt, zijn zulke kwaliteiten een must, vooral als we handmatige testers in het team hebben (die niet noodzakelijkerwijs programmeervaardigheden hebben) die nu de overstap maken naar automatisering en kunnen genieten van Python’s snelle leercurve om snel scripts te schrijven.

Er zijn nogal wat redenen waarom Python’s populariteit is gestegen op het gebied van testautomatisering en waarom het wordt gezien als een van de beste keuzes voor testautomatisering. Onder deze redenen zult u vinden: De Zen van Python (19 leidende principes voor Python’s ontwerpfilosofie), vriendelijk voor beginners maar ook krachtig voor experts, het is zowel objectgeoriënteerd als functioneel, het heeft een rijke bibliotheek aan pakketten voor testen, een wereldwijd sterke community, en nog veel meer! Ik raad aan er meer over te lezen op het geweldige AutomationPanda Blog.

Het juiste Python Test Framework voor jou

Met het toenemende gebruik van Python, neemt ook de populariteit van test frameworks gebaseerd op Python toe. In het begin kan het een beetje verwarrend zijn om te weten welke te kiezen uit al die rijkdom aan tools die er zijn, omdat elk zijn voors en tegens heeft. Dat gezegd zijnde, elk project en elke organisatie heeft andere vereisten en beperkingen, dus we moeten ze allemaal in overweging nemen bij het kiezen van een tool die het beste bij ons past. Ik raad je aan deze geweldige artikelen te lezen over hoe je de juiste tool voor jou kiest:

  1. How To Select The Right Test Automation Tool
  2. How to Select the Best Tool – Research Process
  3. Criteria for Selecting the Right Functional Testing Tools

En natuurlijk – waarom bestaan er voor- en nadelenlijsten, als ze ons niet helpen extra advies te krijgen over onze favoriete tools, allemaal op één plek! 😉 Dus, laten we diep in de top 8 Python test frameworks duiken die er zijn, en zowel hun voordelen als hun tekortkomingen verkennen, zodat je veel dichter bij het selecteren van het ideale Python test framework voor jouw behoeften komt.

Voordelen en nadelen van de top 8 Python testframeworks

  1. Robot Framework
  2. Pytest
  3. TestProject
  4. PyUnit (Unittest)
  5. Nose2
  6. Behave
  7. Lettuce
  8. Testify
  9. Conclusion

Robot Framework (RF)

Robot Framework (RF) is een open source testautomatiseringsraamwerk voor acceptatietests, acceptatie testgestuurde ontwikkeling (ATDD) en robot procesautomatisering (RPA). De kern is geïmplementeerd in Python, maar kan ook draaien op Jython (Java implementatie van Python) en IronPython (Python voor .NET framework). Om het te draaien moet je Python versie 2.7.14 of hoger installeren.

Pros

  • Gebaseerd op Keyword-driven testing (KDT) aanpak, waardoor we eenvoudig testgevallen kunnen maken met behulp van door mensen leesbare trefwoorden (geen codeerervaring vereist).
  • Ondersteunt alle besturingssystemen (Windows, Linux, of MacOS), en alle toepassingen (web, mobiel en desktop apps).
  • Levert duidelijke en gebruiksvriendelijke HTML-rapportagegegevens (inclusief screenshots).
  • Rijk ecosysteem met veel API’s waardoor het een zeer uitbreidbaar framework is en het mogelijk maakt om te integreren met elke andere 3rd party tool.
  • Grote community support en online resources.

Cons

  • Parallel testen wordt niet standaard ondersteund, maar dat kan wel via Selenium Grid of via Pabot (een parallelle executor voor RF).
  • Ten goede en ten kwade dwingt het je om te werken volgens een vooraf gedefinieerde methodologie, de initiële leercurve is misschien iets langer dan gebruikelijk voor beginners
  • Het maken van generieke keywords kan langer duren dan het schrijven van gecodeerde tests
  • Het is niet eenvoudig om de rapporten aan te passen.
  • Heeft geen echte if/else constructie, maar er zijn verschillende manieren om hetzelfde effect te krijgen (zoals kan worden onderzocht in hun officiële documentatie)

Bottom line: Als u op zoek bent naar een keyword-gedreven framework aanpak waarmee handmatige testers en business analisten automatiseringstesten kunnen maken, dan is RF de oplossing voor u, die een verscheidenheid aan uitbreidingen & bibliotheken biedt en gemakkelijk te gebruiken is. Als u echter op zoek bent naar het ontwikkelen van complexe scenario’s, zult u een aantal aanpassingen moeten doen die niet in het framework zijn ingebouwd.

Pytest

Pytest is een open-source testframework dat mogelijk een van de meest gebruikte Python-testframeworks is die er zijn. Pytest ondersteunt unit testen, functionele testen en API testen. Om het te draaien heb je Python versie 3.5 of hoger nodig.

Pros

  • Maakt compacte en eenvoudige testsuites mogelijk.
  • Is zeer uitbreidbaar door het gebruik van plugins, zoals: pytest-randomly, pytest-cov, pytest-django, pytest-bdd.
  • U kunt ook pytest html plugin aan uw project toevoegen om HTML rapporten af te drukken met een eenvoudige command-line optie.
  • Kan tests parallel uitvoeren met behulp van een Pytest plugin pytest-xdist. Je kunt er hier ook meer over lezen.
  • Heeft een zeer grote gemeenschap.
  • Ondersteunt fixtures die je helpen om alle parametercombinaties te dekken zonder testgevallen te herschrijven, en zijn een geweldige manier om context tussen stappen te beheren.

Cons

  • Compatibiliteit is niet de sleutel voor Pytest, want hoewel u gemakkelijk testgevallen kunt schrijven met Pytest, zult u deze niet kunnen gebruiken binnen een ander testframework vanwege het gebruik van de unieke routines van Pytest.
Samengevat: Als u op zoek bent naar het maken van unit tests, kleine en beknopte tests, die complexe scenario’s ondersteunen, dit volwassen full-featured kader is voor u.

TestProject

TestProject is 100% GRATIS complete automatisering kader met cloud-rapporten. Met behulp van TestProject, kunt u eenvoudig testautomatisering ontwikkelen voor mobiele, web of generieke doeleinden met de Python open source SDK. Het ondersteunt Python versie 3.6 of hoger, en ondersteunt zowel Pytest als Unittest frameworks. TestProject bevat alle benodigde dependencies als onderdeel van de single cross-platform agent executable (U kunt deze webinar opname bekijken om te beginnen).

Pros

  • Single Agent executable die alle 3rd party libraries bevat die nodig zijn voor het uitvoeren en ontwikkelen van testautomatisering voor mobiele, web en generieke tests.
  • Gratis Automatische cloud-gebaseerde rapporten in HTML/PDF formaat (inclusief screenshots).
  • Uitvoeringsgeschiedenis toegankelijk via RESTful API.
  • Altijd up-to-date met de nieuwste en stabiele Selenium/Appium driver versies.
  • Single SDK voor Web, Android, iOS en Generic tests.
  • Ingebouwde test runner en rapportage mogelijkheden.
  • Cross platform ondersteuning voor Mac, Windows, Linux en Docker.
  • Grote community en ondersteuning: forum, blog en ingebouwde live chat.

Cons

  • De agent kan tests één test tegelijk uitvoeren, dus voor parallel testen zou je Docker Agents moeten gebruiken.
  • De rapporten zijn alleen beschikbaar op TestProject cloud, om het lokaal op te slaan moet je een PDF-rapport downloaden of de RESTful API gebruiken.
  • De agent heeft een internetverbinding nodig om tests uit te voeren.

Bottom line: Als u op zoek bent naar een enkel framework dat uw volledige automatiseringsinspanningen van begin tot eind dekt, dan is TestProject zeker degene voor u en een perfecte pasvorm voor teams met gemengde vaardigheden, van beginners tot ervaren automatiseringsexperts.

PyUnit (Unittest)

PyUnit (Unittest) is een unit testing framework voor Python dat is geïnspireerd door JUnit. Het is het standaard Python test framework dat uit de doos komt met het Python pakket, en dus degene waar de meeste ontwikkelaars hun testen mee beginnen.

Pros

  • Omdat het deel uitmaakt van de standaard Python bibliotheek zijn er geen extra modules nodig om te installeren – het komt uit de doos met het Python pakket.
  • Biedt eenvoudige en flexibele test case uitvoering.
  • Snelle generatie van testrapporten, zowel XML-rapporten als unittest-sml-rapportage.

Cons

  • De bedoeling van de testcode wordt soms onduidelijk, omdat het abstractie ondersteunt.
  • Er is een enorme hoeveelheid boilerplate code nodig.
  • Op basis van Junit is de camelCase naamgevingsmethode in gebruik, in plaats van Python’s snake_case naamgevingsconventie.
Bottom line: Als je op zoek bent naar basale unit testing en bekend bent met xUnit frameworks, zul je het heel gemakkelijk vinden om aan de slag te gaan met PyUnit en het zou waarschijnlijk de meest comfortabele voor je zijn, zonder noodzaak voor extra afhankelijkheden.

Nose2

Nose2 is een opvolger van Nose en is in principe PyUnit (Unittest), maar dan met plugins. Nose2 breidt PyUnit uit met verschillende plugins die ondersteuning toevoegen voor test executie, test discovery, decorators, fixtures, parameterisatie, etc.

Pros

  • Makkelijk om mee te beginnen omdat het het PyUnit (Unittest) framework uitbreidt dat uit de doos komt met de Python bibliotheek.
  • Inclusief een groot aantal ingebouwde plugins die je testen sneller en makkelijker kunnen maken.
  • Maakt parallel testen mogelijk met behulp van de mp plugin.
  • Verzamelt automatisch tests, zolang je enkele eenvoudige richtlijnen volgt voor het organiseren van je bibliotheek en testcode.

Cons

  • Geen uitgebreide documentatie die je kan tegenhouden als je net begint.
  • Niet zo actief onderhouden in tegenstelling tot andere frameworks.

Bottom line: Als je PyUnit al gebruikt, kun je net zo goed Nose2 een kans geven en onderzoeken hoe het PyUnit uitbreidt.

Behave

Behave is een van de populairste Python BDD (behavior-driven development) testframeworks. Hoewel het niet officieel deel uitmaakt van het Cucumber project, functioneert het zeer vergelijkbaar met Cucumber frameworks.

Pros

  • Het maakt het schrijven van testgevallen in leesbare taal mogelijk, wat leidt tot gemakkelijke samenwerking tussen teams met vergelijkbare functies.
  • Er is een grote hoeveelheid documentatie en ondersteuning beschikbaar om te helpen bij het aan de slag gaan.
  • Ondersteunt volledig Gherkin taal – dus het creëren van feature files vereist geen technische kennis.
  • Het heeft Django en Flask integraties.

Cons

  • Er is geen ondersteuning voor parallelle uitvoering.
  • Alleen voor black box testing.

Bottom line: Als je team een BDD-aanpak volgt, je eerdere BDD-kennis hebt (zoals Cucumber, SpecFlow, enz.) en op zoek bent naar black box-testen – moet je zeker Behave bekijken. Je zou ook andere Python BDD frameworks moeten verkennen, zoals: Pytest-bdd, Lettuce (wordt hieronder beschreven), Radish en meer in dit Python BDD testing frameworks vergelijkingsartikel. Als je meer nodig hebt dan black box testen, dan moet je ergens anders kijken.

Lettuce

Lettuce is een ander Python BDD framework en het is gebaseerd op Cucumber. Vereist Python 2.7.14 of hoger.

Pros

  • Ondersteunt de taal Gherkin, waardoor zelfs niet-technische teamleden gemakkelijk tests kunnen maken met behulp van natuurlijke taal.
  • Gelijk aan Behave, wordt het meestal gebruikt voor black-box testen, maar het kan voor meer soorten testen worden gebruikt. Lettuce kan bijvoorbeeld verschillende server- en database-gedragingen en interacties testen.

Cons

  • Minder functies dan andere frameworks, dus meer geschikt voor kleine projecten.
  • De ondersteuning en documentatie lijken niet te worden onderhouden.
  • Vraagt om toegewijde communicatie tussen alle belanghebbenden van het project: dev, QA en managers om ervoor te zorgen dat de implementatie succesvol is.

Bottom line: Als je een klein BDD-project hebt, is Lettuce een geweldige optie voor eenvoudige, en natuurlijke taal testcreatie onder alle teamleden.

Testify

Testify is ontworpen om de gemeenschappelijke Unittest en Nose frameworks te vervangen en heeft geavanceerde functies ten opzichte van de standaard Unittest.

Pros

  • Gebruikt voor unit testen, integratie testen en systeem testen.
  • Voor degenen die bekend zijn met Unittest, Testify is zeer eenvoudig om mee te beginnen.
  • Hebt uitgebreide plugins.
  • Gelijk aan Nose2, Testify maakt test discovery.
  • Eenvoudige syntaxis naar fixture methode.

Cons

  • Geen uitgebreide documentatie, dus beginners moeten wellicht investeren in het vinden van relevante bronnen.
  • Parallel testen is niet eenvoudig te realiseren.

Bottom line: Als je eerdere ervaring hebt met Unittest, zal het vrij eenvoudig voor je zijn om je bestaande tests aan te passen om met Testify te werken, dus het is zeker de moeite waard om te bekijken.

Conclusie

We zijn aan het einde gekomen van deze python testing framework vergelijkingslijst, en nu is het tijd om degene te kiezen die het meest aan je eisen voldoet.

Ben je op zoek naar meer een BDD aanpak? Is het unit testen je op zoek bent om te bereiken of meer van functioneel testen? Heeft uw team technische of codeerervaring, of bestaat het vooral uit beginners? Deze en vele andere vragen moet u in overweging nemen bij het nemen van een beslissing. Elk van de bovengenoemde raamwerken heeft zijn voordelen en nadelen, en er is niet zoiets als goed of slecht, maar eerder geschikt. Geschikt voor je eigen behoeften en producteisen.

Ik hoop dat dit artikel je niet alleen heeft kunnen helpen om te begrijpen hoe goed Python is voor automatiseringstesten, maar ook om je te helpen op je weg naar gemakkelijk Python testen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.