نرم افزار خود را با یک رژیم آزمایشی دقیق که توسط این چارچوب های پایتون آسان شده است، ضد گلوله کنید.
سادگی پایتون آن را به یکی از بهترین زبان های برنامه نویسی برای نوشتن تست های خودکار تبدیل می کند. این زبان چند چارچوب تست نرمافزاری را ارائه میکند تا به شما کمک کند کارآمدتر تست کنید.
فرقی نمیکند در حال آزمایش سرتاسر، تست بارگذاری و استرس یا موارد دیگر باشید، اینها بهترین چارچوبهای تست نرمافزار مبتنی بر پایتون هستند.
1. Pytest
Pytest یک چارچوب تست ساده است که در پایتون و برای پایتون نوشته شده است. چرا باید از آن برای آزمایش استفاده کرد؟ منحنی یادگیری آسانی دارد و چارچوبی برای تست واحد و ادغام است. همچنین از وراثت کلاس از unittest پشتیبانی می کند.
یکی از نقاط قوت فریم ورک این است که روشی تمیزتر و کوتاهتر برای نوشتن تستها در پایتون ارائه میکند. به عنوان مثال، اعتبارسنجی یک خروجی کد به اندازه فراخوانی یک کلمه کلیدی assert ساده است. اگر می خواهید چندین تست را به طور همزمان اجرا کنید، Pytest با ویژگی تست موازی بدون هد خود در زمان صرفه جویی می کند.
Pytest همچنین از اجرای خط فرمان مجموعه های آزمایشی پشتیبانی می کند. این کار به سادگی اجرای دستور pytest از ترمینال پوشه تست است. لازم نیست در مورد فایل های آزمایشی زحمت بکشید، زیرا فریم ورک به طور خودکار آنها را شناسایی می کند.
با این حال، دستور با اعلان فایل نیز کار می کند. بنابراین شما همچنین می توانید Pytest را با نام فایل فراخوانی کنید:
pytest patter_tests.py
اجرای یک فایل آزمایشی با Pytest خروجی مناسبی برای انسان تولید میکند که مراحل تست را دنبال میکند و به شما میگوید که خطا کجاست:
2. نمایشنامه نویس
چارچوب نمایشنامه نویس پیشنهاد مایکروسافت به جامعه تست نرم افزار است. در حالی که بسیاری از فریمورکها تستهای هدلس را انجام میدهند، Playright از هر دو حالت هدلس و هد پشتیبانی میکند. این یکی از بهترین فریم ورک ها برای آزمایش رابط کاربری است که از مرورگرهای فایرفاکس و کرومیوم مانند اج و کروم پشتیبانی می کند.
از نظر ویژگی، نمایشنامه نویس به سلنیوم نزدیک است. این مورد دوم را برای آزمایش موازی مبتنی بر ابر و ابزارهای ارکستراسیون مطابقت دارد. اما با عملکرد تست API خود سلنیوم را شکست می دهد. آزمایش موازی نمایشنامهنویس میتواند مشکل باشد، زیرا حلقه رویداد آن بهطور پیشفرض فقط قابلیت تست تک را اجرا میکند. با این حال، می توانید با استفاده مناسب از حلقه های پایتون راه خود را در این زمینه پیدا کنید.
اگر میخواهید بدون کد بروید، میتوانید از کدژن Playwright برای نوشتن کد تست به صورت پویا استفاده کنید. هنگامی که شما با DOM تعامل دارید، یک فایل آزمایشی مخصوص زبان ایجاد می کند. مولد انتخابگر آن همچنین به شما امکان میدهد عناصر وب را به راحتی و تنها با شناور کردن روی آنها بدون دردسر بازرسی DOM انتخاب کنید.
نمایشنامهنویس دارای انتظار خودکار پیشفرض است. بنابراین، قبل از اجرای موارد تست، برای بارگیری DOM متوقف می شود. در زمان نگارش، چارچوب نمایشنامه نویس علاوه بر پایتون، از جاوا اسکریپت، تایپ اسکریپت، جاوا و دات نت پشتیبانی می کند.
3. سلنیوم
سلنیوم یکی از پرکاربردترین چارچوبهای تست اتوماسیون با پشتیبانی خوب جامعه است. برخلاف Playwright، قابلیت تست API را ارائه نمی دهد. بنابراین چارچوبی برای آزمایش منطق باطن نیست. اما درایورهای مرورگر Chromium و غیر مبتنی بر Chromium را برای ارزیابی و اعتبارسنجی UI ارائه می دهد.
این فریم ورک از زبان برنامه نویسی بیشتری پشتیبانی می کند و در اتوماسیون عمومی وب همه کاره تر است. همچنین قابلیت شبکه ابری را برای سازماندهی موارد آزمایشی به صورت موازی می پذیرد. بنابراین، این یک انتخاب عالی برای آزمایش بین مرورگر و کراس پلتفرم است.
سلنیوم دارای مجموعه ای از انتخابگرهای اختصاصی است که به شما امکان می دهد به عنوان یک کاربر معمولی با رابط کاربری تعامل داشته باشید. و اگر به مقداری از ادعای عمل UI نیاز دارید، می توانید این را از کلاس unittest به ارث ببرید. Selenium همچنین دارای یک پسوند IDE برای کروم و فایرفاکس است. این تست ضبط و پخش را ارائه می دهد. اما بر خلاف کدژن Playwright، کد تست تولید نمی کند.
4. ربات
Robot یک چارچوب تست پایتون منبع باز و کلیدواژه است. به طور کلی، اتوماسیون تست را تا حد امکان آسان می کند. در حالی که باید برای موارد تست در چارچوب های دیگر کد بنویسید، در Robot به زبان انگلیسی ساده است. بنابراین برای نوشتن موارد آزمایشی انسان پسندتر مفید است.
نقطه قوت آن تست پذیرش است – برای اطمینان از اینکه نرم افزار با معیارهای مشخص شده مطابقت دارد. فراتر از آزمایش، ابزارهای اتوماسیون رباتیک عمومی برای خودکارسازی وظایف رابط کاربری نیز دارد.
شروع با چارچوب Robot آسان است. شما می توانید مجموعه ای از کارها را به زبان ساده انسانی ایجاد کنید. سپس برای هر کدام در فایل های جداگانه تست کیس ها را آماده کنید. ربات قابلیت تست کمی را ارائه می دهد، اما می توانید این را با کتابخانه های آزمایشی دیگر گسترش دهید. به عنوان مثال، میتوانید آن را با سلنیوم جفت کنید تا قابلیتهای مرورگر را به تست UI اضافه کنید.
5. دکتر
Doctest یک کتابخانه تست پایتون داخلی است که به شما امکان می دهد کد خود را در حین آزمایش مستند کنید. این یکی از بهترین انتخاب ها برای اجرای تست های واحد است. اما از تست کامپوننت 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 جفت کنید تا قابلیتهای چند مرورگر را دریافت کنید. همچنین میتوانید تستهای موازی را با واحد تست هنگام جفت شدن با چارچوبهای پشتیبانی شده از شبکه ابری اجرا کنید. بنابراین، می توانید از قدرت آن در یکپارچه سازی و آزمایش انتها به انتها استفاده کنید.
به عنوان مثال، هنگامی که با سلنیوم ترکیب میشود، میتوانید خروجی مورد انتظار را در برابر نتیجه یک جزء با استفاده از کلمه کلیدی ارثی اظهار بررسی کنید. با این حال، برخلاف Pytest، احتمالاً کد بیشتری را در unittest مینویسید زیرا فراخوانی آن سختکدتر است.
7. بینی 2
Nose2 از نظر عملکرد ارتباط نزدیکی با Pytest دارد. با این حال، ویژگی های اصلی خود را از چارچوب واحد تست به ارث می برد. مانند Pytest، می توانید از آن به عنوان یک تست برای موارد تست نوشته شده در چارچوب های دیگر مانند Selenium یا unittest استفاده کنید.
هم از تست واحد و هم از تست ادغام پشتیبانی می کند. بنابراین چه بخواهید رابط کاربری را آزمایش کنید یا عملکرد کد خود را بررسی کنید، Nose2 تمام ابزارهای مورد نیاز را فراهم می کند.
همچنین تست پارامتری را می پذیرد. این شامل درج پارامترهای آزمایشی مانند مرورگرهای آزمایشی و پلتفرمها در داخل دکوراتور است. سپس می توانید به هر پارامتر در بدنه کد دسترسی داشته باشید. این موضوع Nose2 را به یکی از بهترین فریم ورکها برای اجرای آزمایشهای بین مرورگرها به صورت موازی روی شبکههای ابری تبدیل میکند.
برنامه خود را تست کنید و نرم افزار با کیفیت را منتشر کنید
تست یک تمرین خوب در برنامه نویسی است که به شما کمک می کند قبل از انتشار عمومی باگ ها را شناسایی و حذف کنید. در حالی که برخی از چارچوبهای آزمایشی عمدتاً مبتنی بر پایتون هستند، برخی دیگر از چندین زبان برنامهنویسی پشتیبانی میکنند.
اگرچه بهتر است تست های واحد را در زبان توسعه خود نگه دارید، اما می تواند مستقل از زبان باشد. با خیال راحت از هر یک از این چارچوب های تست پایتون استفاده کنید.