рдЖрдЧреЗ 
рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░реАрдХреНрд╖рдг, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рд╕рдореБрджрд╛рдп рдореЗрдВ, рдЕрдХреНрд╕рд░ рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рдХрдИ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИрдВред рдмреНрд░рд╛рдпрди рдУрдХреЗрди рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рдЙрдард╛рддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рднреА рд╣реИред
рджрд┐рдорд┐рддреНрд░реА рдЬрд╝рд┐рдиреЛрд╡рд┐рдПрд╡
рдкрд╛рдЗрдерди рдореЗрдВ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЗ рд▓реЗрдЦрдХ

рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг Python 3.6 рдФрд░ pytest 3.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ 3.2 рдкрд╛рдпрдерди 2.6, 2.7, рдФрд░ рдкрд╛рдпрдерди 3.3+ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЯрд╛рд╕реНрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХ рдХреЗ рд╡реЗрдм рдкреЗрдЬ pragprog.com рдкрд░ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ (рдЖрдкрдХреЗ рд╣рд╛рде рдЕрдирдЯреВрдЯ рд╣реЛ рдЧрдП рд╣реИрдВ!), рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХ рдХреЗ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХрд╛рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╣рд╛рдБ, рдкреБрд╕реНрддрдХ рдХреЗ рд╡реЗрдм рдкреЗрдЬ рдкрд░, рдЗрд░реЗрдЯрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдПрдХ рдЪрд░реНрдЪрд╛ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж
рдкрд╣рд▓реЗ рдореБрдЭреЗ рдорд┐рд╢реЗрд▓ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рд╣реЛрдЧрд╛ - рдореЗрд░реА рдкрддреНрдиреА рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рджреЛрд╕реНрддред рдпрд╣ рдПрдХ рджрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рдХрдорд░реЗ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдЯреЗрдмрд▓ рдХреЗ рдмрдЬрд╛рдп, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдВрдЯреАрдХ рд╕реНрдХреНрд╡рд╛рдпрд░ рдУрдХ рдбрд╛рдЗрдирд┐рдВрдЧ рдЯреЗрдмрд▓ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдХрд╛рдЧрдЬ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рд╣реИред рдореЗрд░реЗ рд░реЗрдЯреНрд░реЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдЦрд┐рд▓реМрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрдВрджрд░ рдХрд╛рдВрдЪ рдХреА рдХрд┐рддрд╛рдмреЛрдВ рдХреА рдЕрд▓рдорд╛рд░реА рдЬреЛ рд╣рдордиреЗ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдПрдХрддреНрд░ рдХреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рддрдХрдиреАрдХреА рдХрд┐рддрд╛рдмреЗрдВ, рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдФрд░ рдХрд░рддрдм рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реА рдЧреЗрдВрджреЗрдВ рднреАред рдиреЛрдЯреЛрдВ, рдбреЛрд░рд┐рдпреЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рд╕реНрдЯрд┐рдХрд░ рд╕реЗ рднрд░реЗ рдХрд╛рдЧрдЬ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдЪреАрди рдПрд▓реНрдпреВрдореАрдирд┐рдпрдо рдмрдХреНрд╕реЗред рдПрдХ рджреАрд╡рд╛рд░ рдордЦрдорд▓ рд╕реЗ рдврдХреА рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдХрдИ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЦрд░реАрджрд╛ рдерд╛, рдЬрдм рдХрдкрдбрд╝реЗ рдХреА рджреБрдХрд╛рди рдиреЗ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдерд╛ред рдЬрдм рдореИрдВ рдкреЙрдбрдХрд╛рд╕реНрдЯ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХрдкрдбрд╝реЗ рдХреА рдЧреВрдВрдЬ рд╢рд╛рдВрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рдпрд╣рд╛рдВ рди рдХреЗрд╡рд▓ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рдЖрдВрддрд░рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реБрд╕рдВрдЧрдд рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рднреА рдХрд┐ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬреЛ рдорд┐рд╢реЗрд▓ рдиреЗ рдореЗрд░реЗ рд╕рд╛рде рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдмрдирд╛рдИ рдереАред рд╡рд╣ рдФрд░ рдореИрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдЯреАрдо рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЙрд╕рдиреЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдкрд╛рдЧрд▓ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ рдПрдХ рдмреНрд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреЙрдбрдХрд╛рд╕реНрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рджреЛ, рдФрд░ рдЕрдм, рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдпрд╛ рддреЛ, рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рд▓рд┐рдЦреЗрдВред рдЙрд╕рдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рд╕реНрдерд╛рди рд╣реИред рдЬрдм рдореИрдВ рдердХ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд▓рд┐рдЦрдиреЗ рдХреА рддрд╛рдХрдд рд╣реИ, рддреЛ рд╡рд╣ рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдмреАрд╕ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рддрдм рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░реВрдВрдЧрд╛, рдЙрд╕рдиреЗ рдмрд╛рдж рдореЗрдВ рдореЗрд░реА рдорджрдж рдХреАред рдХреЙрд▓реЗрдЬ рдХреА рд░рд╛рддреЗрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдореЗрд░реА рджреЛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЕрджреНрднреБрдд, рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдФрд░ рд╢рд╛рдирджрд╛рд░ рдмреЗрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЧреИрдмреНрд░рд┐рдПрд▓рд╛ рдФрд░ рд╕реЛрдлрд┐рдпрд╛, рдЬреЛ рдореЗрд░реЗ рджреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдкреНрд░рд╢рдВрд╕рдХ рд╣реИрдВред рдПрд▓рд╛ рд╕рднреА рдХреЛ рдкреЗрд╢ рдХрд░рддреА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкреЙрдбрдХрд╛рд╕реНрдЯ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рдпрд╛ рдиреЗ рдЕрдкрдиреЗ рдмреИрдХрдкреИрдХ рдкрд░ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯрд┐рдХрд░ рдлреНрд▓реИрдХ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдЙрд╕рдиреЗ рджреВрд╕рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓рд┐рдпрд╛ред
рдзрдиреНрдпрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓реЛрдЧ рд╣реИрдВред
рдореЗрд░реЗ рд╕рдВрдкрд╛рджрдХ рдХреИрдерд░реАрди рдбреНрд╡реЛрд░рдХ рдиреЗ рдореБрдЭреЗ рдПрдХ рд╕реБрд╕рдВрдЧрдд рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреБрд╕реНрддрдХ рд╣реИ, рди рдХрд┐ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ред рдореИрдВ рдПрдХ рдмреНрд▓реЙрдЧрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧрдпрд╛, рдФрд░ рдмрд╣реБрдд рд╕реА рд╣реЗрдбрд▓рд╛рдЗрдиреНрд╕, рд╕рдмрд╣реЗрдбрд┐рдВрдЧ рдФрд░ рд▓рд┐рд╕реНрдЯ рдЖрдЗрдЯрдореНрд╕ рд╕реЗ рдЬреБрдбрд╝ рдЧрдпрд╛ рдФрд░ рдХреЗрдЯреА рдиреЗ рдзреИрд░реНрдпрдкреВрд░реНрд╡рдХ рдореЗрд░рд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдореИрдВ рдПрдХ рдмреЗрд╣рддрд░ рд▓реЗрдЦрдХ рдмрди рд╕рдХреВрдВред
рдореБрдЭреЗ рдПрдХ рдореМрдХрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП Suzanne Davidson Palatinate, Andy Hunt рдФрд░ рдмрд╛рдХреА Pragmatic Bookshelf рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
рддрдХрдиреАрдХреА рд╕рдореАрдХреНрд╖рдХреЛрдВ рдиреЗ рдореБрдЭреЗ рдИрдорд╛рдирджрд╛рд░ рд░рдЦрд╛, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рд╢реИрд▓реА рдореЗрдВ рднреА, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг PEP 8 рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдУрд▓рд┐рд╡рд░ рдмреЗрд╕реНрдЯрд╡рд╛рд▓реНрдЯрд░, рдлреНрд▓реЛрд░рд┐рдпрди рдмреНрд░реБрдЗрди, рдлреНрд▓реЛрд░рд┐рд╕ рдмреНрд░реБрдЗрдиреЛрдЧ, рдорд╛рд░реНрдХ рдЧреБрдбреА, рдкреАрдЯрд░ рд╣реИрдореНрдкрдЯрди, рдбреЗрд╡ рд╣рдВрдЯ, рдЕрд▓ рдХреНрд░рд┐рдВрдХрд░, рд▓реЛрдХреЗрд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреБрдорд╛рд░реВ рдордХрд╛рдиреА, рдмреНрд░реВрдиреЛ рдУрд▓рд┐рд╡реЗрд░рд╛, рд░реЛрдиреА рдкрдлреНрдирд╕реНрдХрд┐рдорд┐рдбреНрдЯ, рд░рд╛рдлреЗрд▓ рдкрд┐рдпрд░рдЬрд╝рд┐рди, рд▓реБрд╕рд┐рдпрд╛рдиреЛ рд░рд╛рдорд╛рд▓реЛ, рдлреНрд░реИрдВрдХ рд░реБрдЗрдЬрд╝ рдФрд░ рджрд┐рдорд┐рддреНрд░реА рдЬрд╝рд┐рдиреЛрд╡рд┐рдПрд╡ред рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдХрдИ рдкрд╛рдЗрд╕реНрдЯ рдХрд░реНрдиреЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ / рдпрд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд▓реБрд╕рд┐рдпрд╛рдиреЛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдЕрдзреНрдпрд╛рдпреЛрдВ рдХреЛ рдХрдИ рд╕рдореАрдХреНрд╖рдХреЛрдВ рдХреЛ рднреЗрдЬрд╛ред рд▓реБрд╕рд┐рдпрд╛рдиреЛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдФрд░ рдЙрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдкрдврд╝рдирд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рдерд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрдирдХреА рд╕рднреА рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рддреАрди рдЕрдзреНрдпрд╛рдпреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдФрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдФрд░ рдмрд╛рдХреА рдХрд┐рддрд╛рдм рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рджрд┐рдпрд╛ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╢рд╛рдВрдд рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдкрд╛рдЗрдЯреЗрд╕реНрдЯ-рджреЗрд╡ рдЯреАрдо рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдУрд▓рд┐рд╡рд░ рдмреЗрд╕реНрдЯрд╡рд╛рд▓реНрдЯрд░, рдлреНрд▓реЛрд░рд┐рдпрди рдмреНрд░реВрд╣рд┐рди, рдлреНрд▓реЛрд░рд┐рд╕ рдмреНрд░реБрдЗрдиреЛрд╣реЗ, рдбреЗрд╡ рд╣рдВрдЯ, рд╣реЛрд▓реНрдЧрд░ рдХреНрд░реЗрдХреЗрд▓, рдмреНрд░реВрдиреЛ рдУрд▓рд┐рд╡реЗрд░рд╛, рд░реЙрдиреА рдкрдлреНрдирд╕реНрдЪрдорд┐рдб, рд░рд╛рдлреЗрд▓ рдкрд┐рдпрд░рдЬрд╝рд┐рди рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ рдЬреАрд╡рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рд╡рд░реНрд╖реЛрдВ рд╕реЗ рджреЗ рд░рд╣реЗ рд╣реИрдВред
рдФрд░ рдЖрдЦрд┐рд░реА рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо, рдореБрдЭреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдзрдиреНрдпрд╡рд╛рдж рджрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд▓рд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдХрд╛рдо рдиреЗ рдЙрдирдХрд╛ рд╕рдордп рдмрдЪрд╛рдпрд╛ рдФрд░ рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЦреБрд╢ рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж!
рдмреНрд░рд╛рдпрди рдУрдХреЗрди
рд╕рд┐рддрдореНрдмрд░ 2017
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЕрдиреБрд╕рдВрдзрд╛рди, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдорд╛рдк рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдиреНрдп рдЙрджреНрдпреЛрдЧреЛрдВ рдореЗрдВ рднреА рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрд╛рдпрдерди рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ, рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдФрд░ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ рдЫреЛрдЯрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддреЗрдЬреА рд╕реЗ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдореИрдиреНрдпреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдмрд╕ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЯреАрдореЛрдВ рдХреЛ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╕рд░реНрд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Pytest рджрд░реНрдЬ рдХрд░реЗрдВред
рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХреНрдпрд╛ рд╣реИ
рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкрд╛рдпрдерди рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг, рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ, рдХреНрдпреВрдП рдЯреАрдореЛрдВ, рд╕реНрд╡рддрдВрддреНрд░ рдкрд░реАрдХреНрд╖рдг рд╕рдореВрд╣реЛрдВ, рдЯреАрдбреАрдбреА рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХрддрд░рдлрд╛ рдпрд╛ рдирд╛рдХ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдмрджрд▓ рдЧрдИ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдореЛрдЬрд╝рд┐рд▓рд╛ рдФрд░ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ "рдореБрдЦрд░", рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдкреНрд▓рдЧрдЗрди рдореЙрдбрд▓ рдФрд░ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЗрдХрд┐рди рд╕рд░рд▓ рд╕реНрдерд┐рд░рддрд╛ рдореЙрдбрд▓ рдЬреИрд╕реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдореЗрдВ рдмреЗрдЬреЛрдбрд╝ рд╣реИред
pytest рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ pytest рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИред рдПрдХ рдЙрдкрдХрд░рдг рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдкрд╛рддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рд▓реЛрд╢рди рдХреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреЗрдВред рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдХрд░ рдпрд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рдпрдерди рд╡рд┐рддрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдФрд░ рд╡реЗрдм рд╕реНрд╡рдЪрд╛рд▓рди рдЬреИрд╕реЗ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдХреБрдЫ рдХрд╛рд░рдг рдмрддрд╛рдП рдЧрдП рд╣реИрдВ рдХрд┐ рдХрдИ рдЕрдиреНрдп рдПрдХреАрдХреГрдд рдкреНрд░рдгрд╛рд▓реА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреНрдпреЛрдВ рдЦрдбрд╝рд╛ рд╣реИ:
- рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред
- рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рднреА рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред
- рдЯреЗрд╕реНрдЯ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
- рдЯреЗрд╕реНрдЯ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред (рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рджреЛ рдмрд╛рд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)
- рдЖрдк рд╕реЗрдХрдВрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
self.assertEqual()
assert
рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ self.assertEqual()
рдпрд╛ self.assertLessThan()
ред рдмрд╕ рдЬреЛрд░ рд╕реЗ !- рдЖрдк unittest рдпрд╛ рдирд╛рдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП pytest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдПрдХ рднрд╛рд╡реБрдХ рдФрд░ рдмрдврд╝рддреЗ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдпрд╣ рдЗрддрдирд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдФрд░ рд▓рдЪреАрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд┐рдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╛рдпрдерди рдХреЗ рдЖрдкрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рдЖрдк рд▓реАрдЧреЗрд╕реА рдкрд╛рдпрдерди 2 (2.6 рдФрд░ рдКрдкрд░) рдФрд░ рдкрд╛рдпрдерди 3 (3.3 рдФрд░ рдКрдкрд░) рдкрд░ рдкрд╛рдпрдЯреЗрд╕реНрдЯ рдХреЗ рдЙрд╕реА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реАрдЦрдирд╛
рдХреНрдпрд╛ рдЖрдк рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдХреЗ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдХрднреА рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ? рдореБрдЭреЗ рднреАред рд╣рдо рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдк рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред
рдХрд╛рд░реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛
рд╣рдо рдЬрд┐рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЙрд╕реЗ рдЯрд╛рд╕реНрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдп рдЯреНрд░реИрдХрд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред рдпрд╣ рдХрдИ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдо рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрдк рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╕реАрдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЕрднреА рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЯрд╛рд╕реНрдХ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╕реАрдПрд▓рдЖрдИ) рд╣реЛрддрд╛ рд╣реИ, рд╕реАрдПрд▓рдЖрдИ рдПрдХ рдХреЛрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдПрдкреАрдЖрдИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдХреА рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдПрдкреАрдЖрдИ рд╡рд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред API рдбреЗрдЯрд╛рдмреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓реЗрдпрд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ - MongoDB рдпрд╛ TinyDB рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ ред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдПрдХ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЯреВрд▓ рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рддреНрд░ рд╣реИ:
$ tasks add 'do something' --owner Brian $ tasks add 'do something else' $ tasks list ID owner done summary -- ----- ---- ------- 1 Brian False do something 2 False do something else $ tasks update 2 --owner Brian $ tasks list ID owner done summary -- ----- ---- ------- 1 Brian False do something 2 Brian False do something else $ tasks update 1 --done True $ tasks list ID owner done summary -- ----- ---- ------- 1 Brian True do something 2 Brian False do something else $ tasks delete 1 $ tasks list ID owner done summary -- ----- ---- ------- 2 Brian False do something else $
рдЕрдиреБрд╡рд╛рджрдХ рдиреЛрдЯ: рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЗрд╕ рд╕рддреНрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред
- рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
tasks_db
рдирд╛рдо рдХреЗ TinyDB рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП c:\Users\User_1\tasks_db\
- рдкреНрд░реЗрд░рд┐рддреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЕрдиреНрдпрдерд╛, рд╣рдореЗрдВ рдРрд╕реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
$ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ 'рдХреБрдЫ рдФрд░ рдХрд░реЛ'
рдЙрдкрдпреЛрдЧ: рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ [рд╡рд┐рдХрд▓реНрдк] рд╕рд╛рд░рд╛рдВрд╢
рддреНрд░реБрдЯрд┐: рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдорд┐рд▓реЗ (рдХреБрдЫ рдФрд░)
рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЯрд┐рд▓ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдХреА рд░рдгрдиреАрддрд┐
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рд╕рд┐рд╕реНрдЯрдо рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдпрд╛ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдФрд░ рдлрдВрдХреНрд╢рдирд▓ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рд╕реНрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрдЯреНрд░реИрдЯреЗрдЬреА рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдЪрд░реНрдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ:
- рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ : рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдХреЛрдб рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд░реНрдЧ, рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВред рдореИрдВ рдЕрдзреНрдпрд╛рдп 1 рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдЬ 1 рдкрд░, рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рддрд╛ рд╣реВрдВред рдХрд╛рд░реНрдпреЛрдВ рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ред
- рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг : рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдХреЛрдб рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рдпрд╛ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрддрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЗрдмрд▓ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред
- рд╕рд┐рд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг (рдПрдВрдб-рдЯреВ-рдПрдВрдб) : рдПрдХ рдРрд╕рд╛ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдЕрдВрдд-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред
- рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг : рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдХрд╛рд░реНрдп рдХреЛ рд╣рдо рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЯрд╛рд╕реНрдХ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рд╛ рд╣реИред
- рдЙрдкрдЪрд░реНрдо рдкрд░реАрдХреНрд╖рдг : рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рддрд╣ рдХреЗ рдиреАрдЪреЗ рд╕реНрдерд┐рдд рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░реАрдХреНрд╖рдг рдПрдкреАрдЖрдИ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рди рдХрд┐ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рд╕рдмрдХрдЯрд┐рдЕрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЧреНрдп рд╣реИрдВред
рдпрд╣ рдкреБрд╕реНрддрдХ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ?
рдЕрдзреНрдпрд╛рдп 1 рдореЗрдВ, рдкреЗрдЬ 1 рдкрд░ "рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛", рдЖрдк рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рдЖрдк рдЯрд╛рд╕реНрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддреЗ рд╣реИрдВ - рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЬреЛ рдХрд┐рд╕реА рдПрдХрд▓ рдХрд╛рд░реНрдп (рдЯрд╛рд╕реНрдХ рдирд╛рдо рдХрд╛ рдирд╛рдо) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИред рдЖрдк pytest рдХреЗ рд▓рд┐рдП рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдкрд╣рд▓реА рдЕрд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрди рд░реЛрдХрдирд╛, рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдФрд░ рдмрд╣реБ-рдкреГрд╖реНрда рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдЕрдзреНрдпрд╛рдп 2 рдореЗрдВ, "рдЯреЗрд╕реНрдЯ рдлрдВрдХреНрд╢рдВрд╕ рдмрдирд╛рдирд╛", рдкреГрд╖реНрда 23 рдкрд░, рдЖрдк рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХрд╛ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВ рдФрд░ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ assert
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдЖрдк рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдиреЗрдВрдЧреЗред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЖрдкрдХреЛ рдХрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рде рдЪрд▓реЗрдВрдЧреЗ, рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдпрд╣ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рди рдХреЗрд╡рд▓ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ, рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдХреЗ, рдФрд░ рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВред
рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЕрдзреНрдпрд╛рдп 3 рдореЗрдВ, "рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдлрд┐рдХреНрд╕реНрдЪрд░," рдкреЗрдЬ 49 рдкрд░, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЯреЗрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдЯреЗрд╕реНрдЯ рдлрд┐рдХреНрд╕реНрдЪрд░ рдореЗрдВ рдХреИрд╕реЗ рдбрд╛рд▓реЗрдВ, рд╕рд╛рде рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдмреНрд░реЗрдХ рдХреЛрдб рднреАред рд╕рд┐рд╕реНрдЯрдо (рдпрд╛ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдЗрдВрдбрд┐рд╡рд┐рдЬреБрдЕрд▓ рдпреВрдирд┐рдЯ) рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЖрдк рдЯрд╛рд╕реНрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдЬреБрдбрд╝рдирд╛рд░ рдХреЗ рдЗрд╕ рдкрд╣рд▓реВ рдХреЛ рд╕реАрдЦреЗрдВрдЧреЗ рдФрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реА-рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗред рдлрд┐рдХреНрд╕реНрдЪрд░ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХрд╛ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдФрд░ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЕрдкрдиреЗ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкрдардиреАрдп рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдЬреБрдбрд╝рдирд╛рд░ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдпреЛрдЧреНрдп рд╣реИрдВ, рдФрд░ рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд╛рд╕реНрдХрдмреАрдбреА рдФрд░ рдореЛрдВрдЧреЛрдмреАрдбреА рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдЯрд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
рдЕрдзреНрдпрд╛рдп рек, "рдмрд┐рд▓рд┐рди рдлрд┐рдХреНрд╕реНрдЪрд░" рдореЗрдВ, рдкреГрд╖реНрда Builtрез рдкрд░, рдЖрдк рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬреБрдбрд╝рдирд╛рд░ рджреЗрдЦреЗрдВрдЧреЗред рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдмрд┐рд▓реНрдбрд┐рди рдЬреБрдбрд╝рдирд╛рд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдмрдВрджрд░ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдЕрдзреНрдпрд╛рдп 5 рдореЗрдВ, "рдкреНрд▓рдЧрдЗрдиреНрд╕", рдкреГрд╖реНрда 95 рдкрд░, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ pytest рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗрдВ, pytest рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓реЗрдВ, рдФрд░ рдлрд┐рдХреНрд╕реНрдЪрд░ рд╕рд╣рд┐рдд pytest рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ, рд▓реЗрдЦрди, рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рд╡рд┐рддрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде () рд╡рд┐рддрд░рдг) рдЦреБрдж рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ред рдЗрд╕ рдЪреИрдкреНрдЯрд░ рдореЗрдВ рдЬреЛ рдкреНрд▓рдЧрдЗрди рд╣рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдПрд░рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЯрд╛рд╕реНрдХ рдХреЗ рджреМрд░рд╛рди рджреЗрдЦрддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рдЕрдЪреНрдЫрд╛ред рдЖрдк рдпрд╣ рднреА рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЯреЗрд╕реНрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВред рдХрд┐рд╕ рддрд░рд╣ рдХреА рдореЗрдЯрд╛? рдФрд░ рд╕рд┐рд░реНрдл рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрдзреНрдпрд╛рдп рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдкреГрд╖реНрда 163 рдкрд░ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ 3, "рдкреНрд▓рдЧ рдЗрди рд╕реИрдореНрдкрд▓рд░ рдкреИрдХ," рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЙрдард╛рдпрд╛ред
рдЕрдиреБрдХреВрд▓рди рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рдЕрдзреНрдпрд╛рдп 6 рдореЗрдВ, "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди," рдкреГрд╖реНрда 113 рдкрд░, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рдЗрд╕реНрдЯ рд▓реЙрдиреНрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВред Pytest.ini рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде, рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдЬреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рджрд░реНрдЬ рди рдХрд░рдирд╛ рдкрдбрд╝реЗ, рдмрддрд╛рдПрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рди рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, pytest рдХрд╛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: рдкрд░реАрдХреНрд╖рдг, рдФрд░ рдЕрдзрд┐рдХред рдЗрди рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд╕реНрддреБрдУрдВ рдХреЛ tox.ini рдпрд╛ setup.cfg рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдВрддрд┐рдо рдЕрдзреНрдпрд╛рдп, рдЕрдзреНрдпрд╛рдп 7 рдореЗрдВ, рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде pytest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдкреГрд╖реНрда 125 рдкрд░, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА pytest рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдкрд╛рдпрдерди рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЯрд╛рд╕реНрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рд╖рд╛рдХреНрдд рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВрдЧреЗред рдЖрдк рдореЙрдХ рдХреЗ рд╕рд╛рде рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рд╕реАрдПрд▓рдЖрдИ рдЯрд╛рд╕реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдХрд╛рд░реНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд╡рд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдирдХрд┐рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ pytest рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ unittest рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА unittestbased рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде pytest рд╢реИрд▓реА рдХреЗ рдЬреБрдбрд╝рдирд╛рд░ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рд╣реИ
рдЕрдЬрдЧрд░
рдЖрдкрдХреЛ рдЕрдЬрдЧрд░ рдЧреБрд░реБ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдЕрд▓реМрдХрд┐рдХ рдпрд╛ рд╡рд┐рдЪрд┐рддреНрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд░рдВрдЬ
рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкрд╛рдЗрдк рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреГрд╖реНрда рдкрд░ 159 рдкрд░ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ 2, рдкрд╛рдЗрдк рджреЗрдЦреЗрдВред
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди
рдореИрдВрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рд▓рд┐рдЦрд╛ рдФрд░ рдореИрдХ рд▓реИрдкрдЯреЙрдк рдкрд░ рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдХреЗрд╡рд▓ bash рдореЗрдВ рдЬреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╡реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ pytest рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП cd рд╣реИрдВред рдЪреВрдВрдХрд┐ cd рд╡рд┐рдВрдбреЛрдЬ cmd.exe рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рд╕рднреА рдпреВрдирд┐рдХреНрд╕ рдЧреЛрд▓реЗ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдЯрд░реНрдорд┐рдирд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред
рд╡рд╣ рд╕рдм рд╣реИред рдЖрдкрдХреЛ pytest рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдХреЛрдб рдирдореВрдиреЗ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕рдВрд╕рд╛рдзрди
рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг Python 3.6 рдФрд░ pytest 3.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ 3.2 рдкрд╛рдпрдерди 2.6, 2.7 рдФрд░ рдкрд╛рдпрдерди 3.3+ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЯрд╛рд╕реНрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХ рдХреЗ рд╡реЗрдм рдкреЗрдЬ pragprog.com рдкрд░ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ (рдЖрдкрдХреЗ рд╣рд╛рде рдЕрдирдЯреВрдЯ рд╣реЛ рдЧрдП рд╣реИрдВ!), рдЖрдкрдХреЛ рдХрд╛рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХ рдХреЗ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╣рд╛рдВ, рдкреБрд╕реНрддрдХ рдХреЗ рд╡реЗрдмрдкреЗрдЬ рдкрд░ рдЗрд░реЗрдЯрд╛ рдкреЛрд╕реНрдЯ рдФрд░ рдЪрд░реНрдЪрд╛ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рдореИрдВ рдкрдЪреНрдЪреАрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдХреБрдЫ рднреА рдореБрдЭреЗ рдЯреЗрд╕реНрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрд┐рддрдирд╛ рдХрд┐ рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдиреЗ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдкреБрд╕реНрддрдХ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦреЗрдВрдЧреЗ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдЖрдк рдореЗрд░реА рддрд░рд╣ рд╣реА рдЯреЗрд╕реНрдЯ рдХреЛрдб рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
рдЖрдЧреЗ 