میدونید Coverage چیه ؟ اگر نمیدونید بیایید تا سید یکم چیز یادتون بده
خب به معنای لغوی یعنی پوشش، اینکه برنامه نویس پوشش چطور هست و ایا لباس لختی پختی میپوشه یا نه ربطی به این قضیه نداره 😁
کاوریج رو دو جور میشه باهاش کار کرد. یکی برای وقتی دارید دیباگ میکنید یکی برای وقتی که میخواید ببینید که برای همه قسمت ها تست نوشتید یا نه ؟
مثلا شما یک کد نوشتید و میخواید ببینید چه بخش هاییش اجرا شده. میتونید از پلاگین coverage استفاده کنید که بعد از اجرا کد رو متوقف میکنید و میگه در زمان اجرا این قسمت ها اجرا شدن این قسمت ها نشدن
حالا فرایند کارش چطوریه ؟ ببینید اگر شما یک مفسر باشید(فیلسوف نمیگم ها اصن در حدش نیستید. منظورم از این چیز مسخره ها مثل خود پایتون) میرید لاین به لاین کد رو میخونید. و میگید اهوم ایول بعد میگید خب اینجا میگه فلان فانکشن برم اونم بخونم حالا منو پاس داد فلانجا برم اونم بخونم. کاوریج به شما میگه دقیقا توی این فرایند کجاها صدا زده شده و خونده شده. مثلا شاید شما یک شرط نوشتید اما موقعی که ران بوده و داشتید کاوریج میگرفتید اون شرط هیچ وقت برقرار نشده و نرفته پایینش رو بخونه ببینی چه چرت و پرتی کد زدی
چطوری پوشش تست هارو چک میکنه ؟ هیچی دیگه یهو بدون در زدن وارد میشه و لخت کدای شمارو میبینه (نمیری با نمک 😒😂😐)
خب سید یکم جدی باش. ببینید شما وقتی تست مینویسی میگه خب این فانکشن رو میخوام تست کنم. باید همه حالت ها در نظر بگیرم که حداقل یکبار هر شرطی برقرار بشه یا خطا رو برگردونه و ... اگر تست هایی که نوشتی همه قسمت های اون فانکشن رو در بر گرفت شما کاوریج ۱۰۰ درصد برای اون فانکشن داشتی. در غیر این صورت یک درصدی کمتر میشه این مقدار. و موقعی که کاوریج میگیری شما میفهمی که فلان کدی که برنامه نویس زده ایا واسش تست نوشته که همه حالت هاش تست کنه یا نه و میگی ایول خب این همه جور تستی زده
دیروز ما تونستیم کاوریج پروژه
Aggify رو به صد در صد برسونیم. یعنی لاین به لاینش واسش تست نوشته شده که همه قسمت هاش پاس بشه
یک اکشن گیتهاب هست که روی پروژه ست شده و میره با پکیج pytest-cov تست هایی که ران کرده رو میفرسته برای سایت
codecov.io و میگه این کد چقدرش پوشش داده شده
البته این رو هم بگه کاوریج ۱۰۰٪به معنای این نیست که قطعا کد شما درست کار میکنه. ممکنه گاهی شما تست هاتون پاس بشه اما بنا بر اشتباهات تست نویسی درست تست نکرده باشید و در برخی حالات نتایج نادرستی برگردونده بشه
✅
@SEYED_BAX