Python-ում ինտեգրման և միավորի փորձարկման 7 լավագույն շրջանակները


Փամփուշտ պաշտպանեք ձեր ծրագրաշարը խիստ փորձարկման ռեժիմով, որը հեշտացված է Python-ի այս շրջանակներով:

Python-ի պարզությունը դարձնում է այն լավագույն ծրագրավորման լեզուներից մեկը՝ ավտոմատ թեստեր գրելու համար: Լեզուն առաջարկում է մի քանի ծրագրային ապահովման փորձարկման շրջանակներ, որոնք կօգնեն ձեզ ավելի արդյունավետ փորձարկել:

Անկախ նրանից, թե դուք ավարտից մինչև վերջ փորձարկում եք, բեռնվածություն և սթրես թեստավորում կամ ավելին, սրանք Python-ի վրա հիմնված ծրագրային ապահովման փորձարկման լավագույն շրջանակներն են:

1. Pytest

Pytest-ը պարզ փորձարկման շրջանակ է, որը գրված է Python-ում և Python-ի համար: Ինչու՞ պետք է օգտագործեք այն փորձարկման համար: Այն ունի հեշտ ուսուցման կոր և հանդիսանում է միավորի և ինտեգրման թեստավորման հարմար շրջանակ: Այն նաև աջակցում է դասի ժառանգությանը unittest-ից:

Framework-ի ուժեղ կողմերից մեկն այն է, որ այն ապահովում է Python-ում թեստեր գրելու ավելի մաքուր և կարճ եղանակ: Օրինակ, կոդի ելքի վավերացումը նույնքան պարզ է, որքան assert հիմնաբառ կանչելը: Եթե ցանկանում եք միաժամանակ մի քանի թեստեր գործարկել, Pytest-ը ժամանակ է խնայում իր անգլուխ զուգահեռ փորձարկման հատկությամբ:

Pytest-ը նաև աջակցում է թեստային փաթեթների հրամանի տողերի կատարմանը: Սա նույնքան պարզ է, որքան pytest հրամանը փորձարկման թղթապանակի տերմինալից գործարկելը: Պետք չէ անհանգստանալ թեստային ֆայլերի մասին, քանի որ շրջանակն ինքնաբերաբար հայտնաբերում է դրանք:

Այնուամենայնիվ, հրամանը աշխատում է նաև ֆայլի հայտարարագրման հետ: Այսպիսով, դուք կարող եք նաև կանչել Pytest ֆայլի անունով.

pytest patter_tests.py

Pytest-ով թեստային ֆայլ գործարկելը արտադրում է մարդու համար հարմար արդյունք, որը հետևում է փորձարկման քայլերին և ասում ձեզ, թե որտեղ է սխալը.

2. Դրամատուրգ

Դրամատուրգի շրջանակը Microsoft-ի առաջարկն է ծրագրային ապահովման փորձարկման համայնքին: Թեև շատ շրջանակներ գործում են միայն առանց գլխի թեստավորում, Playright-ն աջակցում է ինչպես առանց գլխի, այնպես էլ գլխի ռեժիմներին: Սա օգտատիրոջ միջերեսը փորձարկելու լավագույն շրջանակներից մեկն է՝ Firefox-ի և Chromium-ի վրա հիմնված բրաուզերների աջակցությամբ, ինչպիսիք են Edge-ը և Chrome-ը:

Խաղարկային առումով դրամատուրգը մոտ է Սելենիին: Այն համապատասխանում է վերջինիս՝ ամպի վրա հիմնված զուգահեռ փորձարկման և նվագախմբի գործիքների համար: Բայց այն հաղթում է Selenium-ին իր API-փորձարկման ֆունկցիոնալությամբ: Դրամատուրգի զուգահեռ փորձարկումը կարող է բարդ լինել, սակայն, քանի որ նրա իրադարձությունների հանգույցը լռելյայն գործում է միայն մեկ փորձարկման հնարավորություն: Այնուամենայնիվ, դուք կարող եք գտնել ձեր ճանապարհը Python օղակների համապատասխան օգտագործմամբ:

Եթե ցանկանում եք գնալ առանց կոդերի, կարող եք օգտագործել Playwright's codegen-ը՝ թեստային կոդը դինամիկ կերպով գրելու համար: Այն ստեղծում է լեզվին հատուկ թեստային ֆայլ, երբ դուք շփվում եք DOM-ի հետ: Նրա ընտրիչի գեներատորը նաև թույլ է տալիս հեշտությամբ ընտրել վեբ տարրեր՝ պարզապես սավառնելով դրանց վրա՝ առանց DOM-ը ստուգելու ցավի:

Դրամատուրգը լռելյայն ավտոմատ սպասարկում ունի: Այսպիսով, այն դադարեցնում է, որպեսզի DOM-ը բեռնվի նախքան փորձարկման դեպքերը գործարկելը: Գրելու պահին դրամատուրգների շրջանակը Python-ից բացի աջակցում է JavaScript, TypeScript, Java և .NET:

3. Սելեն

Selenium-ը ամենաշատ օգտագործվող ավտոմատացման փորձարկման շրջանակներից մեկն է, որն ունի լավ համայնքային աջակցություն: Ի տարբերություն դրամատուրգի, այն չի առաջարկում API-փորձարկման հնարավորություն: Այսպիսով, դա հիմք չէ հետին պլանի տրամաբանությունը փորձարկելու համար: Բայց այն տրամադրում է ինչպես Chromium, այնպես էլ ոչ Chromium-ի վրա հիմնված բրաուզերի վարորդներ՝ միջերեսը գնահատելու և վավերացնելու համար:

Շրջանակն ունի ավելի շատ ծրագրավորման լեզուների աջակցություն և ավելի բազմակողմանի է ընդհանուր վեբ ավտոմատացման մեջ: Այն նաև ընդունում է ամպային ցանցի հնարավորությունը թեստային դեպքերը զուգահեռ կազմակերպելու համար: Այսպիսով, դա հիանալի ընտրություն է խաչաձև զննարկիչի և միջպլատֆորմային փորձարկման համար:

Selenium-ն ունի մի շարք հատուկ ընտրիչներ, որոնք թույլ են տալիս ձեզ շփվել UI-ի հետ՝ որպես սովորական օգտվող: Եվ եթե Ձեզ անհրաժեշտ է UI գործողության հաստատման չափաբաժին, դուք կարող եք դա ժառանգել unittest դասից: Selenium-ն ունի նաև IDE ընդլայնում Chrome-ի և Firefox-ի համար: Սա առաջարկում է ձայնագրման և նվագարկման փորձարկում: Բայց ի տարբերություն դրամատուրգի կոդեգենի, այն չի առաջացնում թեստային կոդ:

4. Ռոբոտ

Robot-ը հիմնաբառերի վրա հիմնված, բաց կոդով Python-ի փորձարկման շրջանակ է: Ընդհանուր առմամբ, դա հնարավորինս հեշտացնում է թեստային ավտոմատացումը: Մինչ դուք պետք է գրեք կոդ փորձարկման դեպքերի համար այլ շրջանակներում, Robot-ում այն պարզ անգլերեն է: Այսպիսով, այն հարմար է մարդու համար ավելի հարմար թեստային դեպքեր գրելու համար:

Դրա ուժը ընդունման փորձարկումն է՝ պարզելու, որ ծրագրաշարը համապատասխանում է սահմանված չափանիշներին: Փորձարկումից բացի, այն նաև ունի ընդհանուր ռոբոտային ավտոմատացման գործիքներ՝ UI առաջադրանքների ավտոմատացման համար:

Robot Framework-ից սկսելը հեշտ է. դուք կարող եք ստեղծել պարզ մարդկային լեզվով գրված առաջադրանքների մի շարք: Ապա պատրաստեք թեստային դեպքեր յուրաքանչյուրի համար առանձին ֆայլերում: Robot-ն ապահովում է փոքր փորձարկման գործառույթ, բայց դուք կարող եք դա ընդլայնել այլ փորձարկման գրադարանների հետ: Օրինակ, դուք կարող եք զուգակցել այն Selenium-ի հետ՝ զննարկիչի հնարավորությունները UI թեստավորմանը ավելացնելու համար:

5. Դոկտ

Doctest-ը ներկառուցված Python-ի փորձարկման գրադարան է, որը թույլ է տալիս փաստաթղթավորել ձեր կոդը, երբ փորձարկում եք: Դա միավորի թեստերի կատարման լավագույն տարբերակներից մեկն է: Բայց այն նաև աջակցում է UI բաղադրիչի փորձարկմանը: Գրադարանը ինտուիտիվ է, կարդում է փաստաթղթերի տողերը ձեր ծածկագրից և վավերացնում ձեր ակնկալվող արդյունքը:

Doctest-ն աշխատում է՝ ստուգելով ֆունկցիան սահմանված արդյունքի հետ: Այն միայն սխալ է թույլ տալիս և վերադարձնում է ճիշտ հաշվարկված արդյունքը, եթե ձեր ակնկալվող արդյունքը սխալ է: Doctest-ում թեստի արդյունքը մաքուր է: Եթե, օրինակ, մի քանի մուտքային տվյալների վրա փորձարկում է կատարվում, այն տալիս է մանրամասն խափանման հաշվետվություն, ներառյալ այն դեպքերը, երբ կոդը ձախողվում է:

Doctest-ի փաստաթղթավորված թեստի մի մասն այսպիսի տեսք ունի, օրինակ.

def findFirst(text):
    """
    Given a string, return the first alphabet
    :param: string
    >>> findFirst("Idowu")
    U
    """
    return text[0].upper()
if __name__=="__main__":
    import doctest
    doctest.testmod()

Վերոնշյալ փաստաթղթավորված թեստը ձախողվում է, քանի որ մենք ակնկալում ենք U, բայց հաշվարկված արդյունքը փոխարենը I է.

6. Միավոր թեստ

Unittest-ը տրամադրում է միավորի թեստեր գրելու ամենակառուցված եղանակներից մեկը: Այն լռելյայն աջակցում է օբյեկտի վրա հիմնված ծրագրավորմանը: Այն փաթաթում է թեստային դեպքերը նվիրված դասերի մեջ և կատարում դրանք իրադարձությունների հանգույցում: Հաշվի առնելով դա՝ unittest-ը հիանալի ընտրություն է, եթե նախընտրում եք ձեր թեստերը կառուցվածքել էջի օբյեկտի մոդելում:

Unittest-ը լռելյայն չի առաջարկում UI-ի փորձարկում: Բայց դուք կարող եք զուգակցել այն մեկ այլ փորձարկման շրջանակի հետ, ինչպիսին է Selenium-ը, զննարկիչի բազմաթիվ հնարավորություններ ստանալու համար: Դուք կարող եք նաև զուգահեռ թեստեր կատարել unittest-ի միջոցով, երբ զուգակցվում են ամպային ցանցի աջակցվող շրջանակների հետ: Այսպիսով, դուք կարող եք օգտագործել դրա հզորությունը ինտեգրման և վերջից մինչև վերջ փորձարկման ժամանակ:

Սելենի հետ համակցվելիս, օրինակ, դուք կարող եք ստուգել ակնկալվող արդյունքը բաղադրիչի արդյունքի համեմատ՝ օգտագործելով ժառանգված հաստատման հիմնաբառը: Այնուամենայնիվ, ի տարբերություն Pytest-ի, դուք, ամենայն հավանականությամբ, ավելի շատ կոդ կգրեք unittest-ում, քանի որ դրա պնդման կանչը ավելի կոշտ կոդավորված է:

7. Քիթ2

Nose2-ը ֆունկցիոնալությամբ սերտորեն կապված է Pytest-ի հետ: Այնուամենայնիվ, այն ժառանգում է իր հիմնական հատկությունները unittest շրջանակից: Pytest-ի նման, դուք կարող եք այն օգտագործել որպես թեստային վազող այլ շրջանակներում գրված թեստային դեպքերի համար, ինչպիսիք են Selenium-ը կամ unittest-ը:

Այն աջակցում է ինչպես միավորի, այնպես էլ ինտեգրման թեստավորմանը: Այսպիսով, անկախ նրանից, թե ցանկանում եք փորձարկել միջերեսը կամ ստուգել ձեր կոդի գործառույթները, Nose2-ն ապահովում է բոլոր անհրաժեշտ կոմունալ ծառայությունները:

Այն նաև ընդունում է պարամետրացված թեստավորում: Սա ներառում է թեստային պարամետրերի տեղադրում, ինչպիսիք են թեստային բրաուզերները և հարթակները դեկորատորի ներսում: Այնուհետև կարող եք մուտք գործել կոդի մարմնի յուրաքանչյուր պարամետր: Սա Nose2-ը դարձնում է լավագույն շրջանակներից մեկը՝ ամպային ցանցերի վրա զուգահեռ բրաուզերների թեստերի իրականացման համար:

Փորձեք ձեր ծրագիրը և թողարկեք որակի ծրագրակազմ

Թեստավորումը ծրագրավորման լավ պրակտիկա է, որն օգնում է ձեզ հայտնաբերել և հեռացնել վրիպակները մինչև հրապարակային թողարկումը: Թեև որոշ փորձարկման շրջանակներ հիմնականում հիմնված են Python-ի վրա, մյուսներն աջակցում են բազմաթիվ ծրագրավորման լեզուների:

Թեև ավելի լավ է միավորի թեստերը պահել ձեր զարգացման լեզվով, այն կարող է ավելի անկախ լինել լեզվից: Ազատ զգալ համապատասխանաբար օգտագործել այս Python-ի փորձարկման շրջանակներից որևէ մեկը: