¸üÐÂʱ¼ä:2021Äê05ÔÂ21ÈÕ17ʱ10·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

ºÃ¶àÈË˵×Ô¶¯»¯Ã»ÓÐÄÇôÉñÆæ£¬²»Òª±»Éñ»°£¬ÎÒÏë˵һ¸ö¸ÅÄ¹¦ÄܲâÊÔµÄÌ컨°å¾ÍÊÇ15k£¬×Ô¶¯»¯ÈëÐÐÊÇ15kµÄн×Ê¡£Äã¿ÉÒÔ˵×Ô¶¯»¯¼¼Êõ±»Éñ»°ÁË£¬Èç¹û²»Ïë±»Ì컨°åÏÞÖÆ£¬´ó¼Ò»¹ÊÇҪѧϰ×Ô¶¯»¯¡£
×Ô¶¯»¯²âÊÔÊÇΪÁ˽ÚԼʱ¼ä³É±¾ºÍÈËÁ¦³É±¾½øÐе쬱¾À´¾ÍÊǺÍÊÖ¹¤²âÊÔÏศÏà³ÉµÄ¡£
×Ô¶¯»¯Ö÷ÒªµÄ֪ʶµã¾ÍÈýÏ
£¨1£©×Ô¶¯»¯²âÊÔ¿ò¼Ü
£¨2£©×Ô¶¯»¯²âÊԽű¾¼¯
£¨3£©·á¸»µÄ×Ô¶¯»¯²âÊÔ¹¤¾ß
±¾ÎÄÎÒÃÇÖ÷ÒªÊÇ»ã×ÜÁËÏÖÔڱȽÏÁ÷Ðг£ÓõÄ×Ô¶¯»¯²âÊÔ¿ò¼Ü¡£
³£ÓõÄPython×Ô¶¯»¯²âÊÔ¿ò¼ÜÓÐRobot Framework¡¢Pytest¡¢UnitTest/PyUnit¡¢Behave¡¢Lettuce¡£Èí¼þ²âÊÔµÄ×Ô¶¯»¯ÔÚÔ¤ÉèÌõ¼þÏÂÔËÐÐϵͳ»òÓ¦ÓóÌÐò£¬ÆÀ¹ÀÔËÐнá¹û£¬Ô¤ÏÈÌõ¼þÓ¦°üÀ¨Õý³£Ìõ¼þºÍÒì³£Ìõ¼þ¡£×Ô¶¯»¯²âÊÔÒÔÈËΪÇý¶¯µÄ²âÊÔÐÐΪת»¯Îª»úÆ÷Ö´ÐеÄÒ»ÖÖ¹ý³Ì¡£
£¨1£©Robot Framework
˵°×Ò»µã¾ÍÊÇ¿ÉÒÔÖ§³Ö¿çƽ̨¡¢¶àÖÖÓ¦ÓòâÊÔ¡£¿ÉÒÔ¼æÈÝ£ºwindos¡¢MacOS¡¢LinuxµÈƽ̨¡£
ÍÆ¼öʹÓÃPython3.6.4È·±£Êʵ±µÄ×¢ÊÍÄܹ»±»Ìí¼Óµ½diamagneticÖУ¬²¢ÇÒ¿ÉÒÔ¸ú×Ù¸ü¸Ä¡£ÐèÒª°²×°Python°ü¹ÜÀíÆ÷—pip¡£
ѧϰµÄÄÚÈÝ£º
¹Ø¼ü×Ö¡¢×ÊÔ´Resource¡¢¿âRobotÖ§³ÖºÜ¶à¿â£¬·ÖΪÄÚÖÃÍâÖõġ£Python¡¢JavaЯ³ÌµÄÎļþ¶¼¿ÉÒÔ£»ÓÃÀý£¨¶à¸ö¹Ø¼ü×Ö×éºÏ£¬Ë³Ðò»òÕß·ÖÖ§¿ØÖƵÈ×é³ÉµÄÎļþΪCase£©£»

£¨2£©Pytest
¹Ù·½Îĵµ½éÉÜ£º
Pytest is a framework that makes building simple and scalable tests easy. Tests are expressive and readable—no boilerplate code required. Get started in minutes with a small unit test or complex functional test for your application or library.
ÊÊÓÃÓÚ¶àÖÖÈí¼þ²âÊÔµÄPytestÊÇÁíÒ»¸öpythonÀàÐ͵Ä×Ô¶¯»¯²âÊÔ¿ò¼Ü¡£Æ¾½è×ÅÆä¿ªÔ´ºÍÒ×ѧµÄÌØµã¸Ã¹¤¾ß¾³£±»QAÍŶӡ¢¿ª·¢ÍŶӡ¢¸öÈËÍŶӡ¢ÒÔ¼°¸÷ÖÖ¿ªÔ´ÏîÄ¿ËùʹÓ᣼øÓÚPytest¾ßÓГ¶ÏÑÔÖØÐ´”Ö®ÀàµÄʵÓù¦ÄÜÐí¶à´óÐÍ»¥ÁªÍøÓ¦Óá£
ʹÓÃÏȾöÌõ¼þ£º³ýÁË»ù±¾µÄPython֪ʶÓû§²¢²»ÐèÒª¸ü¶àµÄ¼¼Êõ´¢±¸¡£ÁíÍâÓû§Ö»ÐèÒªÓÐһ̨´øÓÐÃüÁîÐнçÃæµÄ²âÊÔÉ豸£¬²¢°²×°ºÃÁËPython°ü¹ÜÀíÆ÷¡¢ÒÔ¼°¿ÉÓÃÓÚ¿ª·¢µÄIDE¹¤¾ß¡£
½¨Òé´ó¼ÒÕÒºº»¯°æµÄ¹Ù·½Îĵµ×÷Ϊ²Î¿¼¡£³ýÁ˰²×°ºÍÅäÖà ֮Í⣬ҪѧϰµÄ¾ÍÊǶÏÑÔ¡£ÔÚЬ´úÂëµÄʱºò£¬ÎÒÃÇ»á×öһЩ¼ÙÉ裬¶ÏÑÔ¾ÍÊÇÓÃÓÚÔÚ´úÂëÖв¶×½ÕâЩ¼ÙÉè¡£
£¨3£©UnitTest/PyUnit
PytestºÍUnitTestÊǾ³£±»ÈËÄóöÀ´×ö±È½ÏµÄ¡£
pytestÊÇpythonµÄµÚÈý·½²âÊÔ¿ò¼Ü£¬ÊÇ»ùÓÚunittestµÄÀ©Õ¹¿ò¼Ü£¬±Èunittest¸ü¼ò½à£¬¸ü¸ßЧ¡£Ê¹ÓÃpytest±àдÓÃÀý£¬±ØÐë×ñÊØÒÔϹæÔò£º
1.²âÊÔÎļþÃû±ØÐëÒÔ“test_”¿ªÍ·(È磺test_ab.py)
2.²âÊÔ·½·¨±ØÐëÒÔ“test_”¿ªÍ·ÕâÀïºÜÃ÷ÏÔ£¬±àд²âÊÔÓÃÀýµÄ·½·¨pytest¾Í±Èunittest¼òµ¥ºÜ¶à¡£
UnitTest/PyUnitÊÇÒ»ÖÖ±ê×¼»¯µÄÕë¶Ôµ¥Ôª²âÊÔµÄPythonÀà×Ô¶¯»¯²âÊÔ¿ò¼Ü¡£»ùÀàTestCaseÌṩÁ˸÷ÖÖ¶ÏÑÔ·½·¨¡¢ÒÔ¼°ËùÓÐÇåÀíºÍÉèÖõÄÀý³Ì¡£Òò´ËTestCase×ÓÀàÖеÄÿһÖÖ·½·¨¶¼ÊÇÒÔ“test”×÷ΪÃû´Êǰ׺£¬ÒÔ±êʶËüÃÇÄܹ»±»×÷Ϊ²âÊÔÓÃÀýËùÔËÐС£Óû§¿ÉÒÔʹÓÃload·½·¨ºÍTestSuiteÀàÀ´·Ö×é¡¢²¢¼ÓÔØ¸÷ÖÖ²âÊÔ¡£Ò²¿ÉÒÔͨ¹ýÁªºÏʹÓÃÀ´¹¹½¨×Ô¶¨ÒåµÄ²âÊÔÔËÐÐÆ÷¡£ÕýÈçÎÒÃÇʹÓÃJunitÈ¥²âÊÔSeleniumÄÇÑù£¬UnitTestÒ²»áÓõ½UnitTest-sml-reporting¡¢²¢ÄÜÉú³É¸÷ÖÖXMLÀàÐ͵ı¨¸æ¡£
ʹÓÃÏȾöÌõ¼þ£ºÓÉÓÚUnitTestĬÈÏʹÓÃÁËPython£¬Òò´ËÎÒÃDz¢²»ÐèҪʲôÏȾöÌõ¼þ¡£³ýÁËÐèÒª¾ß±¸Python¿ò¼ÜµÄ»ù±¾ÖªÊ¶£¬Ò²¿ÉÒÔ¶îÍâµØ°²×°pip¡¢ÒÔ¼°ÓÃÓÚ¿ª·¢µÄIDE¹¤¾ß¡£
UnitTest±àдPythonµ¥Ôª²âÊÔ´úÂ룬°üÀ¨ÏÂÃæ¼¸¸ö²½Ö裬Ҳ¾ÍÊÇÎÒÃÇÓ¦¸ÃѧϰµÄ²½Öè¡£
дһ¸öPythonÀ࣬¼Ì³ÐunittestÄ£¿éÖеÄtestcaseÀ࣬ÔÚ±àд²âÊÔÀàÖж¨Òå²âÊÔ·½·¨£¨²âÊÔÓÃÀý£©£¬ÔÚ²âÊÔ·½·¨Öе÷Óñ»²âÊÔ´úÂ룬УÑé²âÊÔ½á¹û¡£TsetCaseÀàÖÐÌṩÁ˺ܶ®Ð£ÑéµÄ·½·¨£¬×î³£¼ûµÄ¾ÍÊÇassertEqual£»
£¨4£©Behave
ÐÐΪÇý¶¯¿ª·¢(behavior-driven development£¬BDD)£¬ÊÇÒ»ÖÖ»ùÓÚÃô½ÝÈí¼þ¿ª·¢µÄ·½·¨¡£ËüÄܹ»¹ÄÀø¿ª·¢ÈËÔ±¡¢ÒµÎñ²ÎÓëÕߺÍQAÈËÔ±£¬ÈýÕßÖ®¼äµÄÐ×÷¡£**×÷ΪÁíÒ»ÖÖPython²âÊÔ¿ò¼Ü£¬BehaveÔÊÐíÍŶӱܿª¸÷ÖÖ¸´ÔÓµÄÇé¿ö£¬È¥Ö´ÐÐBDD²âÊÔ¡£´Ó±¾ÖÊÉÏ˵£¬¸Ã¿ò¼ÜÓëSpecFlowºÍCucumber·Ç³£ÏàËÆ£¬³£±»ÓÃÓÚÖ´ÐÐ×Ô¶¯»¯²âÊÔ¡£**Óû§¿ÉÒÔͨ¹ý¼òµ¥Ò×¶ÁµÄÓïÑÔÀ´±àд²âÊÔÓÃÀý£¬²¢Äܹ»ÔÚÆäÖ´ÐÐÆÚ¼äÕ³Ìùµ½´úÂëÖ®ÖС£¶øÇÒ£¬ÄÇЩ±»É趨µÄÐÐΪ¹æ·¶Óë²½Ö裬Ҳ¿ÉÒÔ±»ÖØÓõ½ÆäËûµÄ²âÊÔ·½°¸ÖС£
ʹÓÃÏȾöÌõ¼þ£º**Èκξ߱¸Python»ù´¡ÖªÊ¶µÄÈ˶¼¿ÉÒÔʹÓÃBehave¡£ÆäËûÏȾöÌõ¼þ»¹°üÀ¨£º±ØÐëÏȰ²×°Python 2.7.14¼°ÒÔÉϵİ汾¡£**ÐèҪͨ¹ýPython°ü¹ÜÀíÆ÷»òpipÀ´ÓëBehaveÐ×÷¡£´ó¶àÊý¿ª·¢ÈËÔ±»áÑ¡ÔñPycharm×÷Ϊ¿ª·¢»·¾³£¬µ±È»Ò²¿ÉÒÔÑ¡ÓÃÆäËûµÄIDE¹¤¾ß¡£
£¨5£©Lettuce
LettuceÊÇÁíÒ»ÖÖ»ùÓÚCucumberºÍPythonµÄÐÐΪÇý¶¯Àà×Ô¶¯»¯¹¤¾ß¡£LettuceÖ÷ҪרעÓÚÄÇЩ¾ßÓÐÐÐΪÇý¶¯¿ª·¢ÌØÕ÷µÄÆÕͨÈÎÎñ¡£Ëü²»µ«¼òµ¥Ò×Ó㬶øÇÒÄܹ»Ê¹µÃÕû¸ö²âÊÔ¹ý³Ì¸üÁ÷³©¡¢ÉõÖÁ¸üÓÐȤ¡£
ʹÓÃÏȾöÌõ¼þ£º**ÐèÒª°²×°´øÓÐIDEµÄPython 2.7.14¡¢¼°ÒÔÉϵİ汾¡£**µ±È»£¬Ò²¿ÉÒÔʹÓÃPycharm»òÈÎºÎÆäËûIDE¹¤¾ß¡£Í¬Ê±£¬»¹ÐèÒª°²×°Python°ü¹ÜÀíÆ÷¡£
ÎåÖÖ×Ô¶¯»¯²âÊÔµÄPython¿ò¼ÜÖÐPytest¡¢Robot FrameworkºÍUnitTest¿ÉÖ÷ÒªÓÃÓÚ¹¦ÄÜÓëµ¥Ôª²âÊÔ£¬¶øLettuceºÍBehave½öÊÊÓÃÓÚÐÐΪÇý¶¯²âÊÔ¡£
×Ô¶¯»¯²âÊÔ¼¼ÊõÓÐÄÄЩ?3ÖÖ³£¼ûµÄ¼¼Êõ½éÉÜ
Èí¼þ×Ô¶¯»¯²âÊÔ¹¤¾ßÓÐÄÄЩ?³£ÓÃ×Ô¶¯»¯²âÊÔ¹¤¾ß½éÉÜ
Spring eurekaÔÀí½éÉÜ¡¾Î¢·þÎñ¼Ü¹¹»ù´¡¡¿
ÀÖÓãµç¾ºÈí¼þ²âÊÔÅàѵ¿Î³Ì
±±¾©Ð£Çø