در این مطلب، ویدئو توسعه تست محور (TDD) در پایتون شماره 1 – 3 مرحله TDD با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:22:47
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:02,179 –> 00:00:05,310
سلام.
2
00:00:05,310 –> 00:00:08,099
3
00:00:08,099 –> 00:00:11,249
4
00:00:11,249 –> 00:00:14,490
5
00:00:14,490 –> 00:00:15,690
6
00:00:15,690 –> 00:00:17,280
7
00:00:17,280 –> 00:00:20,040
و
8
00:00:20,040 –> 00:00:21,570
کاری که قرار است در این سری
9
00:00:21,570 –> 00:00:23,990
از ویدیوها انجام دهیم این است
10
00:00:23,990 –> 00:00:26,310
که برخی از تمرینهای
11
00:00:26,310 –> 00:00:31,020
کلیدی TDD را در پایتون نشان میدهیم و امیدواریم
12
00:00:31,020 –> 00:00:33,089
13
00:00:33,089 –> 00:00:35,280
با شروع از ابتداییترین موارد، احساس واقعی عملاً نحوه عملکرد آن را داشته باشید.
14
00:00:35,280 –> 00:00:37,890
همه اقداماتی که اکنون سه
15
00:00:37,890 –> 00:00:39,559
مرحله از چرخه توسعه مبتنی بر آزمایش
16
00:00:39,559 –> 00:00:42,359
هستند همانطور که از نام آن برمی آید
17
00:00:42,359 –> 00:00:44,999
توسعه مبتنی بر آزمایش به معنای
18
00:00:44,999 –> 00:00:47,659
هدایت طراحی و توسعه کد ما
19
00:00:47,659 –> 00:00:53,010
با استفاده از تست ها به عنوان مشخصات است و این
20
00:00:53,010 –> 00:00:55,350
چیزی است که ما آن را چرخه خرد یا تکرار میکرو می نامیم.
21
00:00:55,350 –> 00:00:58,829
سه مرحله و مرحله اول
22
00:00:58,829 –> 00:01:01,620
این است که ما با نوشتن یک تست شروع می کنیم
23
00:01:01,620 –> 00:01:03,929
که ناموفق است، بنابراین یک تست مردود می نویسیم
24
00:01:03,929 –> 00:01:06,210
و چیزی را توصیف می کنیم که ما
25
00:01:06,210 –> 00:01:07,619
می خواهیم نرم افزار انجام دهد و
26
00:01:07,619 –> 00:01:09,890
در حال حاضر این کار را نمی کند، بنابراین این
27
00:01:09,890 –> 00:01:12,360
یک تست است. تست pecification به عنوان
28
00:01:12,360 –> 00:01:14,100
مشخصات کاری عمل می کند که ما می خواهیم
29
00:01:14,100 –> 00:01:16,130
نرم افزار انجام دهد که در حال حاضر انجام نمی دهد
30
00:01:16,130 –> 00:01:18,750
و سپس ساده ترین کدی را می نویسیم که
31
00:01:18,750 –> 00:01:20,189
می توانیم سریع ترین چیزی
32
00:01:20,189 –> 00:01:22,409
را که به ذهنمان می رسد و قسمت تست را می سازد
33
00:01:22,409 –> 00:01:24,450
و دریافت آن مهم است را می نویسیم.
34
00:01:24,450 –> 00:01:26,820
آزمون به سرعت می گذرد زیرا زمانی که
35
00:01:26,820 –> 00:01:28,920
آزمون های ما گذرانده می شوند، این
36
00:01:28,920 –> 00:01:31,229
لوکس بودن این است که بتوانیم با دانستن
37
00:01:31,229 –> 00:01:33,240
اینکه کد ما کار می کند، عقب بنشینیم و می
38
00:01:33,240 –> 00:01:34,890
توانیم بیشتر در مورد طراحی و اینکه
39
00:01:34,890 –> 00:01:38,340
کجای بعدی هستیم فکر کنیم، بنابراین یک آزمون مردود را
40
00:01:38,340 –> 00:01:40,979
می نویسیم و سپس می نویسیم. ساده ترین کد برای
41
00:01:40,979 –> 00:01:43,079
قبولی در آزمون و سپس بسیار بسیار
42
00:01:43,079 –> 00:01:45,899
مهم است قبل از اینکه به
43
00:01:45,899 –> 00:01:47,939
مورد آزمایشی بعدی برویم قسمت بعدی
44
00:01:47,939 –> 00:01:51,689
طراحی خود را متوقف می کنیم و به کد نگاهی می اندازیم
45
00:01:51,689 –> 00:01:53,310
ما یک بررسی کوچک کد داریم
46
00:01:53,310 –> 00:01:56,670
با کدی که ما نوشته شده است و اگر
47
00:01:56,670 –> 00:01:58,579
چیزی وجود دارد که فکر می کنیم باید
48
00:01:58,579 –> 00:02:02,609
اصلاح شود که
49
00:02:02,609 –> 00:02:04,560
برای درک بهتر یا
50
00:02:04,560 –> 00:02:07,530
ساده کردن کد یا حذف تکراری یا
51
00:02:07,530 –> 00:02:09,419
به طور کلی تر برای آسان کردن
52
00:02:09,419 –> 00:02:12,239
تغییر کد بهبود یافته است. بخش و سپس
53
00:02:12,239 –> 00:02:13,360
متوقف میشویم و
54
00:02:13,360 –> 00:02:14,980
قبل از اینکه به آزمون بعدی برویم، به کد
55
00:02:14,980 –> 00:02:17,590
میپردازیم، اگرچه با
56
00:02:17,590 –> 00:02:19,600
نوشتن یک آزمون مردود شروع میکنیم،
57
00:02:19,600 –> 00:02:22,210
سادهترین کد را برای قبولی در آزمون مینویسیم و سپس در
58
00:02:22,210 –> 00:02:25,030
صورت لزوم کد را مجدداً تغییر میدهیم تا
59
00:02:25,030 –> 00:02:27,340
آسانتر شود. تغییر در آینده
60
00:02:27,340 –> 00:02:28,900
بسیار مهم است و این مرحله سوم بسیار مهم است،
61
00:02:28,900 –> 00:02:30,850
زیرا اغلب در اینجاست که
62
00:02:30,850 –> 00:02:35,200
بسیاری از تصمیمات طراحی به درستی انجام می شود، بنابراین
63
00:02:35,200 –> 00:02:36,840
ما می خواهیم این فرآیند را
64
00:02:36,840 –> 00:02:41,170
با استفاده از یک مثال تجاری بسیار ساده
65
00:02:41,170 –> 00:02:43,600
که یک سبد خرید آنلاین است نشان
66
00:02:43,600 –> 00:02:45,130
دهیم تا خرید داشته باشیم. سبد با اقلامی
67
00:02:45,130 –> 00:02:47,380
که دارای قیمت یک واحد قیمت و یک
68
00:02:47,380 –> 00:02:49,810
مقدار هستند و نیاز ما این
69
00:02:49,810 –> 00:02:51,520
است که بتوانیم اقلام موجود در
70
00:02:51,520 –> 00:02:52,090
سبد
71
00:02:52,090 –> 00:02:54,700
را به کیلو گرم جمع کنیم، ما تمایل داریم دریابیم که
72
00:02:54,700 –> 00:02:56,680
ایده خوبی است که با ساده ترین
73
00:02:56,680 –> 00:02:59,470
مثال شروع کنیم، ساده ترین بهترین موردی که میتوانیم به آن
74
00:02:59,470 –> 00:03:02,890
فکر کنیم و سادهترین موردی که
75
00:03:02,890 –> 00:03:05,050
میتوانم برای یک سبد خرید فکر کنم، یک
76
00:03:05,050 –> 00:03:07,030
سبد خالی است که در
77
00:03:07,030 –> 00:03:10,060
حال حاضر مجموع یک سبد خالی برای نشان دادن این موضوع
78
00:03:10,060 –> 00:03:10,840
در پایتون چقدر است.
79
00:03:10,840 –> 00:03:14,160
من به یک چارچوب تست واحد و جو نیاز دارم
80
00:03:14,160 –> 00:03:17,410
اتفاقی می افتد که پایتون با
81
00:03:17,410 –> 00:03:19,660
چارچوب تست واحد خود که
82
00:03:19,660 –> 00:03:21,940
قبلا به عنوان واحد پی شناخته می شد ارسال می شود، اما اغلب
83
00:03:21,940 –> 00:03:24,459
مردم از آن به عنوان تست واحد یاد می کنند زیرا
84
00:03:24,459 –> 00:03:26,799
این نام ماژولی است که
85
00:03:26,799 –> 00:03:29,260
باید وارد کنیم، بنابراین نیازی به
86
00:03:29,260 –> 00:03:31,750
استفاده از پیپ برای آن نداریم. بسیاری از بستهها را
87
00:03:31,750 –> 00:03:33,910
در اینجا وارد کنید و ما فقط میتوانیم مستقیماً از آن استفاده کنیم
88
00:03:33,910 –> 00:03:37,080
، بنابراین بیایید در فایل آزمایشی خود در
89
00:03:37,080 –> 00:03:41,470
اینجا با وارد کردن واحد تستها شروع کنیم،
90
00:03:41,470 –> 00:03:44,170
به طوری که با پایتون ارائه میشود،
91
00:03:44,170 –> 00:03:47,410
خوب حالا یک فیکسچر آزمایشی که
92
00:03:47,410 –> 00:03:49,959
فقط یک کلاس است شامل روشهای تست
93
00:03:49,959 –> 00:03:53,620
یک ابزار تست با واحد PI با
94
00:03:53,620 –> 00:03:55,840
تستهای واحد فقط یک کلاس است که
95
00:03:55,840 –> 00:04:01,630
از یک کلاس در آزمون واحد به نام test
96
00:04:01,630 –> 00:04:06,100
case به ارث میبرد، بنابراین بیایید این کلاس و
97
00:04:06,100 –> 00:04:08,019
تست سبد خرید را صدا کنیم که
98
00:04:08,019 –> 00:04:10,870
منطقی است، مهم است که
99
00:04:10,870 –> 00:04:13,209
وسایل تست شما نامگذاری شوند تا واضح است
100
00:04:13,209 –> 00:04:16,029
که آنها برای چه آزمایش هایی هستند و تنها کاری که ما
101
00:04:16,029 –> 00:04:18,548
باید انجام دهیم این است که از نمونه آزمایشی
102
00:04:18,548 –> 00:04:22,440
مانند آن ارث ببریم و این اکنون یک ابزار آزمایشی
103
00:04:22,440 –> 00:04:24,639
در تست های واحد است،
104
00:04:24,639 –> 00:04:26,949
بنابراین ابزار وقتی تست خود را اجرا می کنیم،
105
00:04:26,949 –> 00:04:29,319
ابزار می داند که داخل این cla را بررسی کند. ss
106
00:04:29,319 –> 00:04:32,560
به دلیل اینکه از آزمون موردی ارث می برد
107
00:04:32,560 –> 00:04:34,900
روش های آزمون روش هایی هستند که با
108
00:04:34,900 –> 00:04:38,830
کلمه test و underscore شروع می شوند و مورد اول ما
109
00:04:38,830 –> 00:04:41,580
فقط یک سبد خالی است
110
00:04:41,580 –> 00:04:44,349
بنابراین مجموع سبد خالی چقدر است بنابراین
111
00:04:44,349 –> 00:04:46,389
دوباره من تست خود را واضح می نامم که
112
00:04:46,389 –> 00:04:51,300
این تست چیست و باید چیست
113
00:04:56,840 –> 00:05:02,009
خوب باشید و اساساً هنگامی که
114
00:05:02,009 –> 00:05:04,169
ما ابزار تست خود را اجرا می کنیم، ابزار می داند که به
115
00:05:04,169 –> 00:05:06,449
دنبال روش هایی بگردد که با
116
00:05:06,449 –> 00:05:08,969
خط پایین تست شروع می شوند و این روش ها
117
00:05:08,969 –> 00:05:11,189
امضای آنها بسیار واضح است و هیچ پارامتری را نمی گیرند و
118
00:05:11,189 –> 00:05:13,919
فقط یک نام دارند
119
00:05:13,919 –> 00:05:15,719
که با پیوست شروع می شود و البته
120
00:05:15,719 –> 00:05:17,669
آنها نیازی به بازگرداندن هیچ تاریخی ندارند
121
00:05:17,669 –> 00:05:21,060
، خوب در حال حاضر و ما باید
122
00:05:21,060 –> 00:05:23,430
برای آزمایشات خود را تنظیم کنیم، اینجا جایی است که بسیاری
123
00:05:23,430 –> 00:05:25,919
از افراد با TDD درگیر هستند، ایده این است
124
00:05:25,919 –> 00:05:29,280
و سرنخ در نام تست
125
00:05:29,280 –> 00:05:31,650
چیزی است که باعث می شود. طراحی کد ما، بنابراین
126
00:05:31,650 –> 00:05:33,810
بسیاری از مردم به خوبی می گویند که چگونه می
127
00:05:33,810 –> 00:05:35,550
توانم برای یک سبد خرید آزمایشی بنویسم،
128
00:05:35,550 –> 00:05:36,719
اگر چیزی به نام
129
00:05:36,719 –> 00:05:40,500
سبد خرید در کد من وجود ندارد، باید این کار را به
130
00:05:40,500 –> 00:05:42,150
درستی انجام دهیم تا در واقع ما چه کنیم.
131
00:05:42,150 –> 00:05:44,550
آیا ما تصور می کنیم اگر
132
00:05:44,550 –> 00:05:46,169
در اینجا تصمیمی برای طراحی بگیرید، تصور می کنیم که
133
00:05:46,169 –> 00:05:48,810
کلاسی به عنوان یک سبد وجود دارد، به عنوان مثال،
134
00:05:48,810 –> 00:05:51,930
بیایید تصور کنیم که آیتم
135
00:05:51,930 –> 00:05:54,000
های سازنده را به آنجا می برد، بنابراین ما یک
136
00:05:54,000 –> 00:05:56,490
لیست خالی از آیتم ها داریم و شما خط قرمز قرمز را می بینید،
137
00:05:56,490 –> 00:05:59,219
بنابراین pycharm است. شکایت از
138
00:05:59,219 –> 00:06:00,840
اینکه این کلاس اکنون وجود ندارد،
139
00:06:00,840 –> 00:06:02,639
این قانون طلایی توسعه مبتنی بر آزمایش است،
140
00:06:02,639 –> 00:06:05,639
ما یک کد منبع را بازی
141
00:06:05,639 –> 00:06:09,539
نمی کنیم مگر اینکه آزمایش هایی داشته باشیم که به آن نیاز داشته باشد
142
00:06:09,539 –> 00:06:11,729
، بنابراین در حال حاضر ما یک تست شکسته در اینجا داریم
143
00:06:11,729 –> 00:06:13,560
و برای ادامه کار ما باید این مشکل را
144
00:06:13,560 –> 00:06:15,810
با اعلام این سبد کلاس برطرف کنیم،
145
00:06:15,810 –> 00:06:18,300
توجه داشته باشید که ابزار با
146
00:06:18,300 –> 00:06:20,639
در نظر گرفتن کار معکوس طراحی شده است، بنابراین به نوعی میداند
147
00:06:20,639 –> 00:06:22,980
که من میخواهم این کار را انجام دهم،
148
00:06:22,980 –> 00:06:25,710
بنابراین ما از تست
149
00:06:25,710 –> 00:06:29,100
تا طراحی پیادهسازی خوب است
150
00:06:29,100 –> 00:06:32,310
و فکر میکنم به عقب کار میکنیم. احتمالاً سادهترین راه برای
151
00:06:32,310 –> 00:06:34,950
راهاندازی این کلاس که ممکن است
152
00:06:34,950 –> 00:06:36,810
با آنها آشنا نباشید، این است که آنها نسبتاً
153
00:06:36,810 –> 00:06:39,240
جدید برای پایتون هستند، این است که میتوانیم آن را به عنوان یک کلاس داده اعلام کنیم،
154
00:06:39,240 –> 00:06:42,600
بنابراین یک کلاس داده در پایتون
155
00:06:42,600 –> 00:06:44,850
برای کلاسهایی استفاده میشود که عمدتاً
156
00:06:44,850 –> 00:06:46,530
برای ذخیره دادهها استفاده میشوند. آنها عمدتا
157
00:06:46,530 –> 00:06:48,510
کلاس ما فقط در آنجا پر شده است
158
00:06:48,510 –> 00:06:49,920
که کمی رفتار خواهد
159
00:06:49,920 –> 00:06:52,140
داشت، یک متد کلی خواهد داشت، اما در واقع این فقط
160
00:06:52,140 –> 00:06:55,170
یک لیست از موارد است، بنابراین ساده ترین راه برای
161
00:06:55,170 –> 00:06:57,470
اعلام آن به عنوان یک کلاس داده
162
00:06:57,470 –> 00:07:00,570
خواهد بود و خواهید دید که ما فقط به آن نیاز داریم. برای وارد کردن
163
00:07:00,570 –> 00:07:05,790
آن از بسته کلاس داده که
164
00:07:05,790 –> 00:07:07,770
دوباره بخشی از پایتون 3 به بعد است،
165
00:07:07,770 –> 00:07:10,650
فکر می کنم و کلاس داده تنها کاری است که باید
166
00:07:10,650 –> 00:07:13,530
انجام دهیم تا اعلام کنیم فهرستی از
167
00:07:13,530 –> 00:07:16,880
آیتم ها دارد، فیلدی مانند این
168
00:07:16,880 –> 00:07:20,610
را اعلام کنیم و آن را به عنوان لیستی اعلام کنیم که یک
169
00:07:20,610 –> 00:07:24,300
نوع داخلی است، بنابراین بیایید این را از تایپ وارد کنیم
170
00:07:24,300 –> 00:07:27,420
و چه اتفاقی میافتد زمانی که
171
00:07:27,420 –> 00:07:29,580
اما زمان اجرا،
172
00:07:29,580 –> 00:07:32,970
سازندهای برای فیلدهایش ایجاد میکند، بنابراین
173
00:07:32,970 –> 00:07:35,370
این سازنده در اینجا به خوبی سبد
174
00:07:35,370 –> 00:07:38,340
اساساً کار میکند زیرا در
175
00:07:38,340 –> 00:07:39,960
واقع یک سازنده ایجاد میکند.
176
00:07:39,960 –> 00:07:44,310
بسیار خوب، اکنون میتوانیم از آن برای آزمایش
177
00:07:44,310 –> 00:07:46,560
مقدار کل استفاده کنیم، بنابراین میخواهیم از
178
00:07:46,560 –> 00:07:48,450
روش اثبات برابری کلاس مورد آزمایشی خود استفاده کنیم
179
00:07:48,450 –> 00:07:51,870
و اولین پارامتر
180
00:07:51,870 –> 00:07:55,680
آن دانستن مقدار واقعی است که در این
181
00:07:55,680 –> 00:07:58,980
مورد کل اعلان سبد است. که
182
00:07:58,980 –> 00:08:01,170
من یک متد توتال را اعلام نکردم و سپس
183
00:08:01,170 –> 00:08:03,600
از آن استفاده کردم، من از متد توتال در
184
00:08:03,600 –> 00:08:05,160
تست استفاده می کنم و این بدان معناست که باید آن را
185
00:08:05,160 –> 00:08:07,680
اعلام کنم پس منظور از تست آنها این است
186
00:08:07,680 –> 00:08:12,490
و مجموع باید 0 باشد،
187
00:08:12,490 –> 00:08:16,699
اما بیایید از آنجا به عقب کار کنیم که
188
00:08:16,699 –> 00:08:20,020
نیاز داریم. این روش کلی است
189
00:08:20,430 –> 00:08:22,260
و در حال حاضر نیازی به برگرداندن چیزی نیستیم،
190
00:08:22,260 –> 00:08:27,120
بنابراین تست شکست ما وجود دارد،
191
00:08:27,120 –> 00:08:29,490
فقط بررسی کنیم و ببینیم
192
00:08:29,490 –> 00:08:31,020
که چرا شکست خورده است، بله، بنابراین
193
00:08:31,020 –> 00:08:32,280
انتظار صفر است، اما ما
194
00:08:32,280 –> 00:08:33,409
در حال
195
00:08:33,409 –> 00:08:36,990
حاضر چیزی را بر نمی گردانیم که این شکست ماست. متن و کاری که
196
00:08:36,990 –> 00:08:38,850
در مرحله بعد انجام می دهیم این است که ساده ترین کاری را که می توانیم به آن فکر کنیم انجام
197
00:08:38,850 –> 00:08:41,520
می دهیم تا ناامیدی را پشت سر بگذاریم،
198
00:08:41,520 –> 00:08:43,260
چیز دیگری که مردم را در مورد
199
00:08:43,260 –> 00:08:44,970
توسعه مبتنی بر آزمایش گیج می کند این است که در این مرحله
200
00:08:44,970 –> 00:08:47,310
برخی از توسعه دهندگان برای
201
00:08:47,310 –> 00:08:50,100
محاسبه کل مواردی که ما انجام نمی دهیم کدی می نویسند.
202
00:08:50,100 –> 00:08:52,140
فقط برای قبولی در این آزمون
203
00:08:52,140 –> 00:08:54,330
تنها کاری که باید انجام دهیم این است
204
00:08:54,330 –> 00:08:57,330
که پاسخ درست را
205
00:08:57,330 –> 00:09:00,330
برگردانیم تا بتوانیم صفر را برگردانیم و به
206
00:09:00,330 –> 00:09:02,520
همین سادگی یک آزمون قبولی داریم،
207
00:09:02,520 –> 00:09:04,920
بنابراین یک تست مردود نوشتیم. و
208
00:09:04,920 –> 00:09:06,930
آن چیزی را که ما w را توصیف کرد وقتی سبد
209
00:09:06,930 –> 00:09:08,790
خالی است کل
210
00:09:08,790 –> 00:09:11,700
آن را انجام دهیم، حالا ما سادهترین کاری را
211
00:09:11,700 –> 00:09:13,380
که میتوانستیم به آن فکر
212
00:09:13,380 –> 00:09:15,870
213
00:09:15,870 –> 00:09:17,790
214
00:09:17,790 –> 00:09:19,800
کنیم انجام دادیم. نوشتهام و میرویم آیا
215
00:09:19,800 –> 00:09:21,870
قبل از حرکت از این کد راضی هستیم یا
216
00:09:21,870 –> 00:09:25,200
باید خوب بازتاب کنیم، فکر میکنم تا اینجا
217
00:09:25,200 –> 00:09:29,850
خوب بوده است، اما یک چیز وجود دارد
218
00:09:29,850 –> 00:09:32,310
که مرا آزار میدهد و آن این است که این
219
00:09:32,310 –> 00:09:34,020
کد منبع است، اکنون این کد راهحل
220
00:09:34,020 –> 00:09:36,000
است. و من فکر نمیکنم این واقعاً
221
00:09:36,000 –> 00:09:38,870
به اینجا تعلق داشته باشد، بنابراین ما میخواهیم آن را
222
00:09:38,870 –> 00:09:43,040
به پوشه اصلی اینجا منتقل کنیم
223
00:09:43,240 –> 00:09:47,380
و فقط آن را سبد خرید صدا
224
00:09:47,380 –> 00:09:49,680
225
00:09:49,680 –> 00:09:52,390
بزنیم، خوب است، ما میرویم و به محض اینکه
226
00:09:52,390 –> 00:09:54,160
من آن refactoring را انجام دادم، دوباره اجرا میکنم
227
00:09:54,160 –> 00:09:55,650
تست کنید و مطمئن شوید ک