
рдореИрдВ рдЖрдЬ рдЕрджреНрднреБрдд TextTest рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ "рд░рд┐рдХреЙрд░реНрдб-рд░реАрдкреНрд▓реЗ" рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рдкрд╛рда-рдЙрдиреНрдореБрдЦ рдкрд░реАрдХреНрд╖рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдФрд░ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред TextTest рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо StoryText рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ - рдЬреЛ рдХрд┐, рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓ рд░рд╣рд╛ рд╣реИ, GUI рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЙрдкрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди TextTest рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдпрд╣ рдЖрдкрдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рд▓реЗрдЦрдХ рд╕реЗ рддреАрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ - рдХреИрдкреНрдЪрд░рдореЙрдХред
рдЗрд╕рд▓рд┐рдП, рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдм рд╢реБрд░реВ рд╣реБрдЖ: рдореБрдЭреЗ рджреВрд╕рд░реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдЧреБрдЗрдХ рдХреЛ рдЯрд┐рдВрдХрд░ (рдЬреАрдпреВрдЖрдИ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓) рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред Google рдореЗрдВ рдЕрдлрд╡рд╛рд╣, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреБрдХреНрдд рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрддрд╛рдм рдерд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЯреЗрдХреНрд╕рдЯреЗрд╕реНрдЯ рдХреЗ рдЙрд▓реНрд▓реЗрдЦ рд╕реЗ рдорд┐рд▓рд╛, рдЬреЛ рди рдХреЗрд╡рд▓ рдЯрд┐рдВрдХрд░ рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЬреАрдпреВрдЖрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рдерд╛ред рд╣рд╛рдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдЪреНрдЫрд╛рдЗрдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рдереАрдВ, рдЬрд┐рдирд╕реЗ рдореБрдЭреЗ рддреБрд░рдВрдд рдкреНрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ред рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢
рд╡рд░реНрддрдорд╛рди рдирд╛рдо: рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ + рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рдХреИрдкреНрдЪрд░рдореЙрдХ рдореЙрдбреНрдпреВрд▓
рдкреБрд░рд╛рдирд╛ рдирд╛рдо: PyUseCase
рдкреЛрд╕реНрдЯ рдХрд░рдиреЗрд╡рд╛рд▓реЗ: Geoff Bache
рдкрд╣рд▓реА рдкреНрд░рддрд┐рдмрджреНрдз: 02/02/2003
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕рд╛рдЗрдЯ: рд╕реЛрд░реНрд╕рдлреЛрд░реНрдЬрд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ: рд▓реЙрдиреНрдЪрдкреИрдб рддреБрд░рдВрдд рдмрдЧ-рдЯреНрд░реИрдХрд░ рд╕реНрдерд┐рдд рд╣реИ
рд▓рд╛рдЗрд╕реЗрдВрд╕: GNU LGPL v3
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рдкрдХреНрд╡ рд╣реИ, рдпрд╣ 10 рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдлрд┐рд░ рднреА рдпрд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдирд╛ рдЬрд╛рд░реА рд╣реИред рд▓реЗрдЦрдХ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдкреВрд░реЗ рд╕рдордп рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐ рдорд╛рд╣ рдХрдИ рджрд░реНрдЬрди рдХрдорд┐рдЯреНрд╕ рдХреЗ рд▓реЙрдиреНрдЪрдкреИрдб рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реВрдВред рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рд▓рдЧрд╛рддрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣рд╛ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╡реЗ рдЗрди 10 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред
рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░
рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕рд╣реА рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рд╕рд╣реА "рдЧреЛрд▓реНрдбрди рдХреЙрдкреА" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдирдП рдкрд░рд┐рдгрд╛рдореА рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рд╛ рдЙрддреНрддреАрд░реНрдг рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рдерд╛ - рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╡реЗ рд╕рд╣реА рд╣реИрдВ, рддреЛ рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ "рдЧреЛрд▓реНрдбрди рдХреЙрдкреА" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред
рддреЛ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдХреНрдпрд╛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рдЕрдкрдиреЗ рд╕реНрдЯрдбрдЖрдЙрдЯ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
- рдЖрдк рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреМрди рд╕рд╛ рдлрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧ)ред
- рдХреИрдкреНрдЪрд░рдореЙрдХ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдареАрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП math.fabs рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди (рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди) рдкрд░ рдХрд┐рд╕реА рднреА рдХреЙрд▓ рдХреЛ рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
- StoryText рд░реИрдкрд░ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП GUI рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╛рдж рдХреЗ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдлреА рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ: рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЬреЛ рдХреБрдЫ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдЯреЗрд╕реНрдЯ рдЦреЗрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, StoryText рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╣реА рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдЬреЗрдЯ рдЙрд╕реА рддрд░рд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реИрдкрд░ рдореМрдЬреВрдж рд╣реИрдВ: PyGTK / Tkinter / wxPython / SWT / Eclipse RCP / GEF / рд╕реНрд╡рд┐рдВрдЧ, рдФрд░ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЕрдкрдиреЗ рдЖрдк рд╕рдВрднрд╡ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдореЗрдВ рдПрдХ рднреА рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рд╣реИред рдЖрдЧреЗ, рдореИрдВ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╕рд╛рде рд╣реА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдПрдХ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╡рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реВрдкрд░реЗрдЦрд╛ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд░рд╣реЗрдЧреАред рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдФрд░ рд╕рдВрднрд╡рдд: рдЗрд╕рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдВрдЧреЗред
рд╕реНрдерд╛рдкрдирд╛
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдЖрд╡рд╛рд╕, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП
рдЕрдЬрдЧрд░ 2.6 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд┐рд░ рд╣рдо
рдЯреЗрдХреНрд╕рдЯреЗрд╕реНрдЯ 3.24 рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓
рдХрд░рддреЗ рд╣реИрдВ , рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ GUG рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PyGtk рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдкрд╣рд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдирдЪреЗрдХ рдХрд┐рдпрд╛), рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рдлреЙрд░ рдкрд╛рдпрдерди" рдХреЗ рд▓рд┐рдП рдЕрдирдЪреЗрдХ рдмреЙрдХреНрд╕ рдХреЛ рд░рдЦрдирд╛ рди рднреВрд▓реЗрдВред
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдХреИрдкреНрдЪрд░рдореЙрдХ рдкрд┐рдЫрд▓реЗ рд╕реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ "easy_install рдХреИрдкреНрд╕реНрдореЙрдХ" рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╕реЗ рд░рдЦрд╛ рд╣реИ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ easy_install рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ
рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ
рд╣реИрдВ )
рдЗрд╕рдХреЗ рдмрд╛рдж, StoryText рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ ("рд╕рд┐рд╕реНрдЯрдо рдЧреБрдг" \ "рдЙрдиреНрдирдд" \ "рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░") рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, c: c__Rthon26 \ tcl \ tclub.5 рдорд╛рди (рдЕрдкрдиреЗ рдЕрдиреБрд╕рд╛рд░ рдкрде рдмрджрд▓реЗрдВ) рдХреЗ рд╕рд╛рде TCL_LIBRARY рдЪрд░ рдЬреЛрдбрд╝реЗрдВред
рдлрд┐рд░ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реЗрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд▓рд╛рдЧреВ рд╣реЛрдВред
рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
рд╣рдо рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдпрд╣ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдирд╛рдо, рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдЪрдпрди рдХрд░реЗрдВ рдХрд┐ рд╣рдо GUI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ (рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ), рд╣рдореЗрдВ рдирд┐рдореНрди рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:
рдЕрдЧрд▓рд╛, TextTest рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ: c: \ рдЯреЗрд╕реНрдЯ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реБрдЖред рд╣рдо рдлрд╝рд╛рдЗрд▓ config.cfg рдХреЗ рдЕрдВрджрд░ рдкрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ ini-рдЬреИрд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ: "рдирд╛рдо: рдорд╛рди" + рдХрднреА-рдХрднреА рдЕрдиреБрднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдорд╛рди рдХреЛ рдмрджрд▓рдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ:
executable:${TEXTTEST_ROOT}/test.py
рдЬрд╣рд╛рдВ TEXTTEST_ROOT рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИред
рдЕрдм рдЖрдк рдЕрдзрд┐рдХ рдмрдбрд╝реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП config.cfg рдХреЗ рдЖрдЧреЗ test.py рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА
рдпрд╣рд╛рдБ рд╣реИредtest.py - рдЗрд╕рдореЗрдВ 3 рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ Tkinter GUI рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдХреА рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЖрдк рддреБрд░рдВрдд рдЕрдВрддрд┐рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ , рдФрд░ рд╕рд░рд▓рддрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ "рд╕реА: \ рдЯреЗрд╕реНрдЯ" рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдк рдкрдврд╝рддреЗ рд╣реИрдВ рдЙрд╕рдореЗрдВ рд╕реЗ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдПрдВред
рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдгред рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЙрддреНрдкрд╛рджрди
рд╣рдо test.py рд╕реЗ mul рдлрдВрдХреНрд╢рди рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗ
def mul(a, b): print 'params: %s, %s' % (a, b) result = a * b print 'result = %s' % result if result > 0: print 'positive' elif result == 0: print 'zero' else: print 'negative'
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ - рдпрд╣ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди, рдкрд░рд┐рдгрд╛рдо рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрдЯреИрдбрдЖрдЙрдЯ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ "mul" рдФрд░ рджреЛ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде test.py рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рд╣реЛрдВрдЧреЗред
рд╣рдо рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг-рд╕реВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "Suite_Mul", рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг "Test_Negative" рдмрдирд╛рдПрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ "mul 1 -2" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВред

рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, TextTest рдЖрдкрдХреЛ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ stderr.cfg рдФрд░ stdout.cfg рдХреЗ рдорд╛рди рдмрджрд▓ рдЧрдП рд╣реИрдВ, рдЕрдЧрд░ рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рдереЗред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдкрд╣рд▓рд╛ рдЦрд╛рд▓реА рд╣реЛ рдЧрдпрд╛ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдРрд╕рд╛ рдкрд╛рда рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
params: 1, -2 result = -2 negative
рдЦреИрд░, рдпрд╣ рд╕рд╣реА рд╣реИ, "рдЧреЛрд▓реНрдбрди рдХреЙрдкреА" рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реБрдП, рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЬрдм рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдлрд▓ рд╣реЛрдЧрд╛ред
рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░реЗ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИред рдпрджрд┐ рдЖрдк рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рдЧрд▓рдд рдлрд╛рдЗрд▓ рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рджреЛ рдорд╛рдорд▓реЛрдВ "Test_Positive" рдФрд░ "Test_Zero" рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рдпрд╣ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдХреЛрдИ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛, рдХреЛрдИ xml, рдмрд╕ рд╕рд╛рджрд╛ рдкрд╛рда рдирд╣реАрдВ рд╣реИрдВред
рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдгред рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг
File_write рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
def file_write(s): f = open('log.txt', 'wt') f.write('%s %s-%s\n' % (time.strftime("%H:%M:%S"), s, s[::-1]))
рдпрд╣ log.txt рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдПрдХ рд▓рд╛рдЗрди + рд╡рд╣реА рд▓рд╛рдЗрди рдХреЗрд╡рд▓ рдЙрд▓рдЯрд╛ рд╣реЛрддреА рд╣реИред
рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг-рд╕реВрдЯ "рд╕реВрдЯ_рдлрд╛рдЗрд▓" рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг "рдЯреЗрд╕реНрдЯ_рдлрд╛рдЗрд▓" рдкреИрд░рд╛рдореАрдЯрд░ "рдлрд╝рд╛рдЗрд▓ рд╣реИрд▓реЛрд╡рд░реНрдб" рдХреЗ рд╕рд╛рдеред
TextTest рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо "рд╕реВрдЯ_рдлрд╛рдЗрд▓" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ "рд▓реЙрдЧ.рдЯреЗрдХреНрд╕реНрдЯ" рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЬреЛ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛрдбрд╝реЗрдВ (рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдЦрд░рд╛рдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╕реЗ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ) рдкрд╛рда рдХреЗ рд╕рд╛рде config.cfg рдлрд╝рд╛рдЗрд▓ред
[collate_file] logfile:log.txt
рднрд╛рдЧреЛ, рдкрд░рд┐рдгрд╛рдо рдмрдЪрд╛рдУред рджреВрд╕рд░реА рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдЬрдВрдЧрд▓реА рдкрд╢реНрдЪрд┐рдо рдореЗрдВ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдЪрд░рд╡рд╛рд╣реЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдмрд╛рд░ рдПрдХ рдФрд░ рд╕рдордп log.txt рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдЬрдм рд╣рдо рдмрджрд▓рддреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛рдлреА рдмрд╛рд░ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИред рдЗрд╕реЗ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╕рдордп, рджрд┐рдирд╛рдВрдХ, рдЖрдИрдкреА, рдорд╢реАрди рдХрд╛ рдирд╛рдо, рдЖрджрд┐ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, TextTest рдХреЗ рдкрд╛рд╕ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ
рд╕рд╛рдзрди рд╣реИ ред рд╣рдо рд╕реНрд╡рдпрдВ рдХреЛ рдКрдкрд░ рдмрдирд╛рдП рдЧрдП config.cfg рдореЗрдВ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп 00:00:00 рддрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
[run_dependent_text] logfile:[0-9][0-9]:[0-9][0-9]:[0-9][0-9]{REPLACE 00:00:00}
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдордп рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдк рджреМрдбрд╝ рдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рддреАрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдгред рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛
рдЕрдм рд╣рдо рд╕реВрддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ
def formula(val): print math.floor(math.fabs(val))
рдФрд░ рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреБрдЫ рдлреБрд╕рдлреБрд╕рд╛рд╣рдЯ рд╕реЗ, рд╣рдо рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЧрдгрд┐рдд рдореЗрдВ рдХреНрдпрд╛ рдореВрд▓реНрдп рдЖрддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдпрд╣ рдХреНрдпрд╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред рдХреИрдкреНрдЪрд░рдореЙрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣рдореЗрдВ рдЗрд╕рдХреА рдорджрдж рдХрд░реЗрдЧреА, рдпрд╣ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде math.fabs рдХреЛ "рд░реИрдк" рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬреЛ рд▓реЙрдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдореВрд▓ math.fabs рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓реЙрдЧ рдореЗрдВ рднреА рдбрд╛рд▓ рджреЗрдЧрд╛ред
рдПрдХ рдирдпрд╛ рдЯреЗрд╕реНрдЯ-рд╕реВрдЯ "рд╕реВрдЯ_рдлрд╛рд░реНрдореВрд▓рд╛" рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг "рдЯреЗрд╕реНрдЯ_рдлрд╛рд░реНрдореВрд▓рд╛" рдкреИрд░рд╛рдореАрдЯрд░ "рдЧрдгрд┐рдд -4.5" рдХреЗ рд╕рд╛рдеред рдлрд┐рд░ рдХреИрдкреНрдЪрд░рдореЙрдХ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдХреЛ рдореБрдЦреНрдп config.cfg рдореЗрдВ (рдПрдХ рдЬреЛ рдХрд┐ рд╕рд┐рдореНрдкреНрдЯрд┐рд╕реНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ) рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
import_config_file:capturemock_config
рдФрд░ Suite_Formula рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреИрдкреНрдЪрд░рдореЙрдХ.рдХреЙрдл рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ Test_Formula рдХреЗ рд▓рд┐рдП рд╣рдо math.fabs рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
[python] intercepts = math.fabs [general] server_multithreaded = False
рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдЖрдк рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рд░рдирд┐рдВрдЧ рдЯреИрдм рдореЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдмреЗрд╕рд┐рдХ рдЯреИрдм рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо "рдХреИрдкреНрдЪрд░рдореЙрдХ" рдЯрд┐рдВрдЪрд░ рдкрд╛рдПрдВрдЧреЗ рдЬреЛ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рдЪреЗрдХрдорд╛рд░реНрдХ рдХреЛ "рд░рд┐рдХреЙрд░реНрдб" рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо "рдЧреЛрд▓реНрдбрди рдХреЙрдкреА" рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╕рдордп рдХреИрдкреНрдЪрд░рдореЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдорд╛рдирдХ stderr рдФрд░ stdout рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирдпрд╛ pythonmoks.cfg рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ:
<-PYT:math.fabs(-4.5) ->RET:4.5
рдпрд╛рдиреА math.fabs рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рд╡рд╣рд╛рдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, "рдХреИрдкреНрдЪрд░рдореЙрдХ" рдмреНрд▓реЙрдХ рдореЗрдВ рдЪреЗрдХрдорд╛рд░реНрдХ рдХреЛ рд░рд┐рдкреНрд▓реЗ рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрдкрд╛рджрдХ рдХреЗ рджреЛрдмрд╛рд░рд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
рдмреЗрд╢рдХ, рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рд╣рдж рддрдХ рджреВрд░ рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИред рдареАрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЪреИрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ tcp / ip рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрд╡рд╛ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдХреИрд╕реЗ? рдЦреИрд░, рд╣рд░ рдЫреАрдВрдХ рдХреЛ рд▓реЙрдЧ рди рдХрд░реЗрдВред рдХреИрдкреНрдЪрд░рдореЙрдХ рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреИрдкреНрдЪрд░рдореЙрдХ рдХрдИ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдореИрдВ рд▓реЗрдЦ рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд╣рд╛рдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдЬреАрдпреВрдЖрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
UPD: рдЬрд╛рд░реА рд╣реИред 2 рднрд╛рдЧ