±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄ»ùÓÚpython+Testlink+JenkinsʵÏֵĽӿÚ×Ô¶¯»¯²âÊÔ¿ò¼Ü,½øÐпª·¢»·¾³ÅäÖã¬Ä£¿é´´½¨µÈ£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ |
|
Ŀ¼
1¡¢ ¿ª·¢»·¾³
2¡¢ Ö÷Òª¹¦ÄÜÂß¼½éÉÜ
3¡¢ ¿ò¼Ü¹¦Äܼò½é
4¡¢ Êý¾Ý¿âµÄ´´½¨
5¡¢ ¿ò¼ÜÄ£¿éÏêϸ½éÉÜ
6¡¢ TestlinkÏà¹ØÅäÖÃÓëÓÃÀý¹ÜÀí
a) APIÏà¹ØÅäÖÃ
b) ÏîÄ¿Ïà¹ØÅäÖÃ
c) ÓÃÀý¹ÜÀí
¢Ù ²½Ö趯×÷ºÍÔ¤ÆÚ½á¹ûÌîд¹æ·¶
¢Ú ²ÎÊý»¯
¢Û ÓÃÀýÖ´ÐÐÒÀÀµ
¢Ü ½ûÓÃÓÃÀý
7¡¢ ÔËÐнá¹û
8¡¢ Ô´ÂëÏÂÔØ
9¡¢ ˵Ã÷
1¡¢¿ª·¢»·¾³
win7\Windows Server 2008 R2 x64
PyCharm 4.0.5
setuptools-29.0.1.zip
ÏÂÔØµØÖ·£ºhttp://pan.baidu.com/s/1mhMSAkK
¹Ù·½ÏÂÔØµØÖ·£ºhttps://pypi.python.org/pypi/setuptools#downloads
python 3.3.2
mysql-connector-python-2.1.3-py3.3-win32
ÏÂÔØµØÖ·£ºhttp://pan.baidu.com/s/1kTRqRht
mysql-connector-python-2.1.4-py3.3-winx64.msi
ÏÂÔØµØÖ·£ºhttp://pan.baidu.com/s/1cDtP1O
¹Ù·½ÏÂÔØµØÖ·£ºhttp://dev.mysql.com/downloads/connector/python/
testlink-1.9.14
ÏÂÔØµØÖ·£ºhttp://pan.baidu.com/s/1pLrcunT
°²×°½Ì³Ì£ºhttp://blog.sina.com.cn/s/blog_13cc013b50102w9am.html
TestLink-API-Python-client-master
ÏÂÔØµØÖ·1£ºhttp://pan.baidu.com/s/1c16H50O
ÏÂÔØµØÖ·2£ºhttps://github.com/lczub/TestLink-API-Python-client#testlink-api-python-client-developers
chardet-2.3.0
ÏÂÔØµØÖ·1£ºhttps://pypi.python.org/pypi/chardet/
ÏÂÔØµØÖ·2£ºhttp://pan.baidu.com/s/1nu7XzjN
2¡¢Ö÷Òª¹¦ÄÜÂß¼½éÉÜ

3¡¢¿ò¼Ü¹¦Äܼò½é
1¡¢¿ò¼Ü¼¯³ÉÁËTestlink,¿ÉʹÓÃTestlinkÁé»î¶Ô²âÊÔÏîÄ¿£¬²âÊԼƻ®£¬²âÊÔÓÃÀý½øÐйÜÀí
2¡¢¿Éͨ¹ýÅäÖÃÎļþÁé»îÅäÖÃÔËÐÐģʽ£º
Ö§³Ö°´²âÊÔÏîÄ¿ÔËÐУºÒ»´ÎÔËÐе¥¸ö¡¢¶à¸öÖ¸¶¨µÄÏîÄ¿»òÕßÈ«²¿ÏîÄ¿£»
Ö§³Ö°´²âÊԼƻ®ÔËÐУºÒ»´ÎÔËÐе¥¸ö¡¢¶à¸öÖ¸¶¨µÄ²âÊԼƻ®£»
Ö§³Ö°´²âÊÔÌ×¼þÔËÐУºÒ»´ÎÔËÐе¥¸ö¡¢¶à¸öÖ¸¶¨µÄ²âÊÔÌ×¼þ(×¢£ºÖ§³ÖÌ×¼þǶÌ×£¬Ì×¼þ -- testlinkÖеIJâÊÔ¼¯)
Ö§³Ö°´ÓÃÀýÔËÐУºÒ»´ÎÔËÐе¥¸ö\¶à¸öÓÃÀý£¬Õâµã¶ÔÌØ±ð·½±ã¿ª·¢½×¶Îʱ£¬¶Ôµ¥¸ö½Ó¿ÚµÄʵÏÖ´úÂë½øÐе÷ÊÔ
3¡¢Ö§³ÖHTTPS£¬HTTP£¬WebServiceÐÒ飬֧³ÖPOST, GET·½·¨£¬Ö§³ÖJSON£¬·ÇJSONÊý¾Ý¸ñʽµÄÇëÇó£¬Ö§³Ö¶àÖÖÐÎʽµÄÊý¾ÝУÑ飬°üº¬Êý¾Ý¿â¼¶±ðµÄÊý¾ÝУÑé
4¡¢Ö§³ÖÔÚ½çÃæ»¯²Ù×÷£¬ÎÞÐëд´úÂë¾Í¿ÉÒÔʵÏÖÈçϲÙ×÷£º
a) ×Ô¶¨Òå±äÁ¿´æ´¢web·þÎñÆ÷¡¢Êý¾Ý¿â·þÎñÆ÷·µ»ØÇëÇó/²éѯ½á¹û
b) ¸ù¾Ý×Ô¶¨Òåģʽ¶Ôweb·þÎñÆ÷·µ»Ø½á¹û½øÐÐ×Ô¶¯Ð£Ñ飬֧³Ö¶àÖÖģʽµÄУÑ飬°üº¬×Ö·û´®£¬²»°üº¬×Ö·û´®£¬¼üÖµÌáÈ¡£¬°üº¬³ÉÔ±£¬²»°üº¬³ÉÔ±£¬Æ¥Åä/²»Æ¥ÅäÕýÔò±í´ïʽ£¬ÍêȫƥÅäÁбí/Ôª×é/¼¯ºÏ/×Öµä
c) ¸ù¾Ý½çÃæÊäÈëµÄsqlÓï¾ä£¬Ö´ÐÐsql²éѯ/¸üвÙ×÷£¬Õë¶ÔÖ»¶Ô·µ»Øµ¥Ìõ¼Ç¼µÄsql²éѯ£¬»¹Ö§³Ö¶Ô²éѯ½á¹û½øÐÐÌáÈ¡£¬±£´æ
d£©Ö§³Öurl¼°²ÎÊýÌåµÄ¶¯Ì¬²ÎÊý»¯£¬Ö§³ÖÈ«¾Ö¶¯Ì¬²ÎÊý£¬·ÇÈ«¾Ö¶¯Ì¬²ÎÊý£¨Èç´æ´¢Ä³¸ö½Ó¿Ú·µ»Ø½á¹ûµÄ×Ô¶¨Òå±äÁ¿£©
5¡¢Õë¶Ô½Å±¾ÖÐÒѾ֧³ÖµÄ³£¼ûÐÒé¼°³£ÓÃÊý¾Ý¸ñʽ£¬ÇÒ²»Ðè¶Ô½Ó¿ÚÖ´Ðнá¹û½øÐÐÊý¾Ý¿â¼¶±ðµÄÂ߼УÑ飬֧³Ö½çÃæÖ±½ÓÔö¼ÓÓÃÀý¶ø²»ÐèÒª¸Ä¶¯½Å±¾´úÂ룬¼´²»»á±àÂëµÄÈËÒ²¿ÉÒÔʹÓñ¾¿ò¼Ü
6¡¢Ö§³Ö²»Í¬±àÂë(utf8,ascii,gb2312)µÄ·µ»Ø½á¹û£¬ÇÒ¿É×ÔÓÉÀ©Õ¹
7¡¢¿É×Ô¶¯Éú³ÉHTML¿ÉÊÓ»¯½Ó¿Ú²âÊÔ±¨¸æ
8¡¢¿É¸ù¾ÝÅäÖÃÔÚ²âÊÔÍê³Éºó£¬×Ô¶¯·¢ËͲâÊÔ±¨¸æÓʼþ£¬Óʼþ·¢ËÍÖ§³ÖSSL¼ÓÃÜ·¢ËͺͷÇSSL¼ÓÃÜ·¢ËÍ£¬Í¬Ê±Ö§³ÖÍù¶à¸öÓÊÏä·¢ËÍÓʼþ
9¡¢Ö§³ÖÎļþ¡¢¿ØÖÆÌ¨µÄÈÕÖ¾´òÓ¡£¬¿É·Ö±ð¿ØÖÆ¿ª¹Ø
10¡¢Ö§³ÖÄ£¿é»¯¿ª·¢
11¡¢Ö§³Ö²âÊÔ»·¾³µÄ¡°Ò»¼ü¡±Çл»£ºpython main.py arg£¬eg python main.py
1
ÆäÖÐ,arg: 1-²âÊÔ»·¾³ 2-Ô¤·¢²¼»·¾³ 3-¼¯³É»·¾³£¬¿É¸ù¾Ýʵ¼ÊÐèÒªÔÚ´úÂë¡¢ÅäÖÃÎļþÖÐ×öÊʵ±µ÷Õû,Ö§³Ö×ÔÓÉÀ©Õ¹ºÍ¸ü¸Ä
12¡¢¿É¼¯³ÉJenkins×Ô¶¯ÔËÐнű¾
²Î¿¼ÎÄÕ£º
¡°ÎªJenkinsÌí¼ÓWindows SlaveÔ¶³ÌÖ´ÐÐpythonÏîÄ¿½Å±¾(http://blog.sina.com.cn/s/blog_13cc013b50102w1yr.html)¡±
¡°ÀûÓÃBuild With Parameters PluginʵÏÖJenkins²ÎÊý»¯¹¹½¨(http://blog.sina.com.cn/s/blog_13cc013b50102wrjj.html)¡±
¡°ÀûÓÃHTML Publisher pluginʵÏÖHTMLÎĵµ±¨¸æÕ¹Ê¾(http://blog.sina.com.cn/s/blog_13cc013b50102wryh.html)¡±
Èç¹ûÐèÒªÖ§³Ö²ÎÊý»¯¹¹½¨£¬ÐèÒªÌæ»»main.py,globalpkg/global_function.py,config/runmodeconfig.pyÎļþ
Windows batch£¬main.py²ÎÊý°´Èçϸñʽд£¬×¢Òâ˳Ðò±ØÐë×ñÊØÈçÏ£º
cd /d C:\Projects\interface_project_for_test
python main.py %run_env% %runmode% %project_mode%
%projects% %project% %plans% %testsuites% %case_id_list%
%global_case_str% |
ÍêÕûÅú´¦Àí²Î¿¼£ºjenkins¼¯³Éhtml±¨¸æÏÔʾºóµÄwindows¹¹½¨Åú´¦ÀíÃüÁî.txt

×¢Ò⣺¼¯³ÉÀïÃæµÄ²ÎÊýĬÈÏÖµÖ»ÄÜΪӢÎĵģ¬ÁíÍ⣬×Ö·û±ØÐë¼ÓË«ÒýºÅ
4¡¢Êý¾Ý¿âµÄ´´½¨
CREATE DATABASE IF NOT EXISTS interface_autotest DEFAULT
CHARACTER SET utf8;
5¡¢¿ò¼ÜÄ£¿éÏêϸ½éÉÜ
a)config

dbconfig.conf£º°üº¬²âÊÔÊý¾Ý¿â£¬Ó¦ÓÃÊý¾Ý¿âµÄÅäÖÃÐÅÏ¢
logconfig.conf£º°üº¬ÈÕÖ¾ÅäÖÃÐÅÏ¢£¬¾ßÌåÈçÏ£º

mail.conf£º°üº¬Óʼþ·¢ËÍÅäÖÃÐÅÏ¢£¬ÈçÏ£¬

×¢£º²»Í¬ÀàÐ͵ÄÓÊÏä(·¢¼þÈËÓÊÏä)£¬ÐèÒªÐÞ¸ÄÅäÖÃÎļþΪ¶ÔÓ¦µÄhostºÍ¶Ë¿Ú
smtp.163.com:25
smtp.qq.com:465
report.conf£º°üº¬²âÊÔ±¨¸æÎļþÅäÖÃÐÅÏ¢£¬ÈçÏÂ

runmodeconfig_xxxx.conf£º°üº¬ÔËÐÐģʽÅäÖÃÐÅÏ¢, runmodeconfig_test.confºÍrunmodeconfig_relase.conf·Ö±ðΪ²âÊÔ»·¾³ºÍÔ¤·¢²¼»·¾³µÄÔËÐÐʱÅäÖÃÐÅÏ¢£¬¿É¸ù¾Ýʵ¼ÊÇé¿ö½øÐе÷Õû


runmodeconfig.py£ºÔËÐÐÅäÖÃÀà
b)globalpkg

log.py£ºÊµÏÖÈÕÖ¾´òÓ¡Àà
mydb.py£ºÊµÏÖÊý¾Ý¿âÀ࣬·â×°Êý¾Ý¿âÏà¹Ø²Ù×÷
mytestlink.py£ºÖ÷ÒªÓÃÓÚ»ñÈ¡testlinkÁ¬½ÓʵÀý
othertools.py£ºÊµÏÖÆäËüͨÓù¦ÄÜ£¬±ÈÈçÊý¾Ýת»»£¬ÅúÁ¿´´½¨Ä¿Â¼µÈ
global_var.py£ºÖ÷ÒªÌṩȫ¾Ö±äÁ¿£¬È«¾ÖʵÀýµÈ


global_function.py£ºÖ÷ÒªÌṩȫ¾Öº¯Êý£¬±ÈÈçÌṩÔËÐе¥¸öÓÃÀýµÄº¯Êý run_testcase_by_idµÈ
c)logs¼°testreport
¿É·Ö±ðÓÃÓÚ´æ·ÅÈÕÖ¾Îļþ£¬²âÊÔ±¨¸æ
d)interface
·â×°½Ó¿Ú²âÊÔ·½·¨Àà

˵Ã÷£º¿É¸ù¾ÝÐèÒª£¬Ã¿¸ö½Ó¿Ú¶ÔÓ¦Ò»¸öÄ£¿é£¬¶ÔÓ¦Ò»¸öÀࣻҲ¿ÉÒÔ¶à¸ö½Ó¿Ú¶ÔÓ¦Ò»¸öÄ£¿é£¬¶ÔÓ¦Ò»¸öÀà
ÐèҪעÒâµÄÊÇ£¬ÕâÀïÌí¼ÓµÄÄ£¿é¼°À࣬ÐèÒªÔÚcasestep.pyÖе¼Èë

½Ó¿Úµ¥Ôª²âÊÔÀà´úÂë˵Ã÷


˵Ã÷£ºÐ°汾´úÂëÖУ¬
outputs_list = []ÒѾ¸Ä³É outputs_dict = {}
´¦Àí·½Ê½Ä¿Ç°Ö§³Ö3ÖÐtest_interface_of_urlencode£¨Õë¶ÔÇëÇóÌåΪurl±àÂ룩£¬test_interface_of_json(Õë¶ÔÇëÇóÌåΪjson¸ñʽ)£¬test_interface_of_xml(Õë¶ÔÇëÇóÌåΪxml¸ñʽ)


ÎÊÌ⣺¼ÙÈçÒª½øÐÐÊý¾Ý¿âºǫ́µÄÂ߼УÑéÕ¦°ì£¿
Õë¶ÔºËÐÄÓÃÀýÎÒÃÇ¿ÉÒÔÕâÑù£¬¸´ÖÆÕû¸ötest_xxxΪ1-µ½n·Ý£¬Ð޸ķ½·¨Ãû£¬È»ºóÔÚ´úÂë×îÏ·½ÐÂÔöÊý¾Ý¿âºǫ́УÑéµÄ´úÂ룬ͬʱÈç¹ûÓбØÒª£¬¶ÔÆäËü´úÂë½øÐÐÊʵ±µÄÐ޸ģ¨ÐÂÔö¡¢É¾³ý¡¢Ð޸ĵȣ©£¬È»ºóÓÃÀý²½ÖèÖÐÏÔʾָ¶¨Òªµ÷Óõķ½·¨¼´¿É¡£
»òÕß°ÑÂ߼д³É´æ´¢¹ý³Ì£¬À©Õ¹´úÂ룬Ôö¼Ó´æ´¢¹ý³Ìµ÷ÓÃ
e)ÆäËüÄ£¿é
ÈçÏ£¬¹ËÃû˼Òå

6¡¢TestlinkÏà¹ØÅäÖÃÓëÓÃÀý¹ÜÀí
ΪÁËÅúÁ¿ÉèÖýӿÚip£¬¶Ë¿Ú(Ö÷ÒªÊÇÕâÁ½¸ö)£¬ÐÒéÐÅÏ¢(½öÓÃÓÚչʾ)£¬ÐèÒª¶ÔÏîÄ¿£¬¼Æ»®£¬Ì×¼þµÈ±ØÒªµÄÅäÖã¬ÒÔ¼°¿Í»§¶Ë»·¾³±äÁ¿ÅäÖÃ
a)APIÏà¹ØÅäÖÃ
ÈçÏ£¬µÇ½Testlink£¬½øÈëÓû§¹ÜÀí-²é¿´Óû§£¬ÈçÏÂ

µã»÷Ä¿±êÓû§(ÀýÖÐΪadmin)£¬´ò¿ªÈçϽçÃæ


µã»÷Éú³ÉеÄÃÜÔ¿£¬ÈçÏÂ

»òÕßÊǵã»÷¡°±à¼Óû§°´Å¥¡±°´Å¥½øÈë½çÃæ

ÔÚÔËÐÐpython½Å±¾¶Ë½øÐл·¾³±äÁ¿µÄÅäÖã¬ÈçÏ£º
1¡¢Ð½¨ÏµÍ³»·¾³±äÁ¿¡°TESTLINK_API_PYTHON_DEVKEY¡±£¬±äÁ¿ÖµÎªÉÏÊöÃØÔ¿

2¡¢Ð½¨¡°TESTLINK_API_PYTHON_SERVER_URL¡±ÏµÍ³»·¾³±äÁ¿£¬±äÁ¿ÖµÎª¡°
http://{host}/testlink/lib/api/xmlrpc/v1/xmlrpc.php¡±,ÆäÖÐhostΪtestlinkµÄ·ÃÎʵØÖ·

²âÊÔÊÇ·ñÉúЧ£º
<code style="font-family:Menlo,
Monaco, Consolas,
'Courier New', monospace;white-space:pre-wrap;margin:2px;line-height:18px;font-size:12px;color:rgb(68,68,68);background-color:rgb(249,249,249);border:none;">C:\Users\
laiyu>python
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013,
00:03:43) [MSC v.1600 32
tel)] on win32
Type "help", "copyright",
"credits" or "license"
for more information.
>>> import testlink
>>> tls = testlink.TestLinkHelper().connect(testlink.
TestlinkAPIClient)
>>> tls.testLinkVersion()
'1.9.14'
</code> |
×¢Ò⣺Èç¹û»¹²»ÐУ¬Ìáʾ404´íÎó£¬Ôò»¹ÐèÒªÅäÖÃtestlinkhelper.py ÖеÄDEFAULT_SERVER_URL£¬½«ÆäÉèÖÃΪhttp://{host}/testlink/lib/api/xmlrpc/v1/xmlrpc.php
python_installation_home\Lib\site-packages\TestLink-API-Python-client-master\build\lib\testlink\testlinkhelper.py
|
b)ÏîÄ¿Ïà¹ØÅäÖÃ
²âÊÔÏîÄ¿ÅäÖÃ

×¢£º¼Æ»®£¬Ò²´æÔÚÊÇ·ñ¿ªÆôµÄÅäÖã¬ÐèÒª¿ªÆô²Å»áÔËÐС£
Ì×¼þÅäÖÃ


c)ÓÃÀý¹ÜÀí
ÈçÏ£¬ÓÃÀý²ã¼¶£¬Ö§³ÖǶÌ×¹ÜÀí

ÓÃÀý±àдÈçÏ£¬×ó²à²½Ö趯×÷£¬±ØÐë°´Èçϸñʽ±àд
¢Ù¡¡²½Ö趯×÷ºÍÔ¤ÆÚ½á¹ûÌîд¹æ·¶
Õë¶Ôhttp,httpsÇëÇó£¬ÇÒ²½Öè²»ÊÇÖ´Ðе¥¸öÓÃÀý¡¢²»ÊÇÖ´ÐÐsql£¬°´ÈçÏÂÌîд£º
²½Ö趯×÷
json¸ñʽ
{
"ˈ̞":"InterfaceUnittestTestCase",
"º¯Êý":"test_interface_of_urlencode",
"ÇëÇóÍ·"£º{"Content-Type":"application/x-www-form-urlencoded","charset":"utf-8"},
"·½·¨":"post",
"url":"/cmorder/1/4",
"²ÎÊý":{"serial":"[global_serial]","openId":"
[global_openId]","fm":1,"mallGoodsId":"26838",
"amount":1,"cartIds":"","fetchTime":"",
"remark":""}
} |
×¢£º
1¡¢Èç¹û²»Ìîд¡°ÀàÃû¼üÖµ¶Ô¡±£¬ÄÇôÀàÃûĬÈÏΪInterfaceUnittestTestCase£¬Èç¹û²»Ìîд¡°º¯Êý¼üÖµ¶Ô¡±£¬ÄÇôº¯ÊýĬÈÏΪtest_interface_of_urlencode
2¡¢¼ü¶ÔÓ¦µÄ²ÎÊýֵΪ¿Õ£¬ÔòÌîдΪ ""£¬¡°¼ü¡±£¬ÓÃË«ÒýºÅ°üº¬£¬¼ü¶ÔÓ¦µÄ¡°Öµ¡±£¬ÓбØÒªµÄ»°Ò²ÊÇË«ÒýºÅ°üº¬£¬Ô¤ÆÚ½á¹ûµÄÌîдҲÊÇÒ»Ñù£¬²»ÔÙ׸Êö
3¡¢Èç¹û¡°²ÎÊý¡±ÖµÎª¿Õ£¬ÔòÌîдΪ "²ÎÊý":""
4¡¢ÓÃÀý²½Öè¶ÔÓ¦µÄtest_xxx·½·¨ÊµÏÖ£¬Òª¾¡Á¿×öµ½½Ó¿Ú²âÊÔÊý¾ÝºÍÒµÎñÂß¼·ÖÀ룬ÔöÇ¿¸´ÓÃÐÔºÍÓÃÀýµÄ¿Éά»¤ÐÔ¡£
Ô¤ÆÚ½á¹û
json¸ñʽ
json¸ñʽ
{"¼ì²é":"body",
"Æ¥Å乿Ôò":"°üº¬×Ö·û´®",
"Ìõ¼þ":[{"ģʽ":"\"success\":true",
"ÏûÏ¢":"´´½¨´¢Öµ¿¨Ö§¸¶¶©µ¥Ê§°Ü£¬success²»ÎªTrue"}],
"Êä³ö":{"success": "\"success\":(.+?),","attach":"attach\":\"(.+?)\""}
} |
×¢£º
1¡¢Ô¤ÆÚ½á¹ûҪô°´¹æ·¶Ìîд£¬ÒªÃ´Îª¿Õ£¬É¶¶¼²»Ð´
2¡¢Èç¹û²»Ï붨Òå±äÁ¿´æ´¢·þÎñÆ÷·µ»Ø½á¹û£¬Ôò²»Ìîд¡°Êä³ö¼üÖµ¶Ô¡±
3¡¢×¢£ºÆ¥Å乿ÔòºÍÌõ¼þ£¬ÒªÃ´¶¼Ð´£¬ÒªÃ´¶¼²»Ð´£¬ÈçÏÂ
{"¼ì²é":"body",
"Êä³ö":{"success": "\"success\":(.+?),","attach":"attach\":\"(.+?)\""}
} |
ÑùÀý

Õë¶Ôhttp,httpsÇëÇó£¬ÇÒ²½ÖèÖ´Ðе¥¸öÓÃÀý¡¢²»ÊÇÖ´ÐÐsql£¬°´ÈçÏÂÌîд£¬json¸ñʽ
²½Ö趯×÷
{
"²½ÖèÀàÐÍ":"Ö´ÐÐÓÃÀý",
"ÓÃÀýid":106,
"ÓÃÀýÃû³Æ":"test-n-´´½¨´¢Öµ¿¨Ö§¸¶¶©µ¥"
} |
Ô¤ÆÚ½á¹û
Ϊ¿Õ£¬²»Ìîд
ÑùÀý

Õë¶Ô²½ÖèÐÐsql£¬°´ÈçÏÂÌîд£º
¸üÐÂ(UPDATE)
²½Ö趯×÷
json¸ñʽ
{
"²½ÖèÀàÐÍ":"Ö´ÐÐsql",
"Êý¾Ý¿â":"db_name",
"¸üÐÂ":"UPDATE mall_shopping_cart
SET amount = 0 WHERE customer_id = %s and closed=1",
"²ÎÊý":"([CaseStep.customer_id],)"
} |
×¢Ò⣺
1¡¢Èç¹û¡°²ÎÊý¡±ÖµÎª¿Õ£¬ÔòÌîдΪ "²ÎÊý":""
2¡¢¡°Êý¾Ý¿â¡±£¬Òª´ÓÄǸöÊý¾Ý¿â²éÊý¾Ý£¬ÆäÖµÀ´Ô´ÓÚglobal_varÀïÃæµÄÊý¾Ý¿â¶ÔÏóÃû³Æ¡£ÈçÏÂͼ

×¢Ò⣺ÕâÀïÈç¹ûÌí¼ÓÁËÊý¾Ý¿â¶ÔÏó£¬ÐèÒªÔÚmain.py½üĩβ´¦ÖÐÌí¼Ó¹Ø±ÕÊý¾Ý¿âÁ¬½ÓµÄ´úÂë db_name.close()
Ô¤ÆÚ½á¹û
Ϊ¿Õ£¬²»Ìîд
²éѯ(SELECT)
²½Ö趯×÷
json¸ñʽ
{
"²½ÖèÀàÐÍ":"Ö´ÐÐsql",
"Êý¾Ý¿â":"db_name",
"µ¥Ìõ²éѯ":"SELECT id FROM customer WHERE
channel_serial=%s",
"²ÎÊý":"(\"[global_openId]\",)"
}
×¢:²ÎÊýֵΪԪ×éµÄ×Ö·û´®ÀàÐͱíʾ (value1,value2,¡¡)£¬Èç¹û²ÎÊýΪ¿ÕÔò "²ÎÊý"£º"",Èç¹û²ÎÊýֵΪ×Ö·û´®ÀàÐ͵ģ¬Ôò°´ÕâÑùÌîд£º
(\"²ÎÊýÖµ\",)
Ô¤ÆÚ½á¹û
json¸ñʽ
{"¼ì²é":"body",
"Êä³ö":{"customer_id":1}
}
»òÕßÈçÏÂ
{"¼ì²é":"body",
"Êä³ö":{"customer_id":1},
"Æ¥Å乿Ôò":"ÏàµÈ",
"Ìõ¼þ"£º[{"ģʽ"£º"[CaseStep.device_no]=123456",
"ÏûÏ¢"£º¡°µÇ¼ʧ°Ü£¬device_no²»Îª123456¡±}]
}
×¢£ºÔ¤ÆÚ½á¹ûҪôΪ¿Õ£¬ÒªÃ´Ñϸñ°´ÕÕÉÏÊöÌîд
ÑùÀý

ÆäËüһЩÑùÀý
·¢ËÍÇëÇó²ÎÊýΪxml¸ñʽ

·¢ËÍÇëÇó²ÎÊýΪjson¸ñʽ

ÈÝ´í´¦Àí

¢Ú¡¡²ÎÊý»¯
1) Õë¶Ôhttps,httpÇëÇó£¬ÇÒ²»ÊÇÖ´ÐÐsql£¬Ò²²»ÊÇÖ´ÐÐÕû¸öÓÃÀýµÄ²½Ö趯×÷¡¢Ô¤ÆÚ½á¹û
Èç¹û²ÎÊýλÓÚ¡°²ÎÊý¡±¡¢¡°ÇëÇóÌ塱£¬ÇÒ¡°²ÎÊý¡±¡¢¡°ÇëÇóÌ塱µÄֵΪ×ֵ䣬°´ÈçϸñʽÌîд
"[var_name]"
{
¡¡,
"²ÎÊý":{"key1":"[global_var1]","key2":"[global_var2]"}
}
{
¡¡,
"ÇëÇóÍ·":{"DeviceId":"[CaseStep.device_no]",
"SerialNo":"[CaseStep.serial_no]",
"Content-Type":"application/json;charset=utf-8","ProductVersion":"
[global_product_version]","ProtocolVersion":"
[global_product_version]","OperatorId":"[OperatorId]",
"Token":"[Token]"},
¡¡
} |
Èç¹û²ÎÊýλÓÚ¡°url¡±»òÕßÔ¤ÆÚ½á¹û¡°Ìõ¼þ¡±ÖеÄ×Öµäkey¶ÔÓ¦µÄÖµ£¬°´ÈçϸñʽÌîд
[ClassName.var_name]¡¢[ClassName.var_name_N]
|
"Ìõ¼þ"£º[{"ģʽ"£º£û"key":
"[CaseStep.branch_id]"},"ÏûÏ¢"£º¡°key´íÎó¡±}]
¡¡
}
2) Õë¶ÔÖ´ÐÐsqlµÄ²½Ö趯×÷¡¢Ô¤ÆÚ½á¹û
²ÎÊýλÓÚ²½Ö趯×÷¡¢²½ÖèÔ¤ÆÚ½á¹û£¬°´ÈçϸñʽÌîд
[var_name]»òÕß \"[var_name]\"
{
¡¡£¬
"²ÎÊý":"(\"[global_openId]\",)"
¡¡
}
{
"¼ì²é":"body",
"Æ¥Å乿Ôò":"ÏàµÈ",
"Ìõ¼þ"£º[{"ģʽ"£º"[CaseStep.device_no]=123456",
"ÏûÏ¢"£º¡°µÇ¼ʧ°Ü£¬device_no²»Îª123456¡±}]
}
×¢£ºÈç¹û´ýÌæ»»"¶¯Ì¬±äÁ¿" [var_name]Ϊ×Ö·û´®ÀàÐ͵ıäÁ¿£¬ÐèÒªÔÚÆä×óÓÒÁ½²à¼Ó
\" ·ûºÅ£¬ÐÎÈç \"[global_openId]\"
3) ±äÁ¿»®·Ö
È«¾Ö±äÁ¿[global_var]£¬À´×Ôglobalpkg.global_var.pyÖж¨ÒåµÄ£¬var_nameºÍ¶¨ÒåµÄÈ«¾Ö±äÁ¿Ãû³Æ±£³ÖÒ»Ö¼´¿É
·ÇÈ«¾Ö±äÁ¿[ClassName.var_name]£¬¿ÉÄÜÀ´×Ôsql²éѯ½á¹û£¬Ò²¿ÉÄÜÀ´×Ôhttp(s)ÇëÇ󷵻ؽá¹ûÖÐÌáÈ¡µÄ
A)¡°²½Ö趯×÷¡±ÖеķÇÈ«¾Ö±äÁ¿À´Ô´ÓÚij¸ösql²éѯ½á¹û£¬Ôò°´ÈçϸñʽÌîд
[CaseStep.var_name]
ÑùÀý

B)¡°²½Ö趯×÷¡±ÖеķÇÈ«¾Ö±äÁ¿À´Ô´ÓÚij¸öhttp(s)ÇëÇ󷵻ؽá¹û£¬Ôò°´ÈçϸñʽÌîд
[ClassName.var_name]¡¢[ClassName.var_name_N]
ÑùÀý

×¢£º
1¡¢µ±µ÷Óõĺ¯ÊýΪĬÈÏÀàÃû£¬¼´InterfaceUnittestTestCaseÀàÖж¨ÒåµÄ·½·¨Ê±£¬ÕâÀï¡°ClassName.¡±¿ÉÒÔ²»Ð´£¬Èç¹ûÊǵ÷ÓÃÆäËüÐÂÔöÀàÖеķ½·¨Ê±£¬ÐèÒªÏÔʾµÄÌîд
2¡¢µ±ÇÒ½öµ±±äÁ¿ÊÇͨ¹ýÕýÔò±í´ïʽÌáÈ¡µÄʱºò£¬²ÉÓÃ[ClassName.var_name_N]£¬µÄÐÎʽ
N´Ó1£¬2£¬3£¬¡¡ÒÔ´ËÀàÍÆ
4) ½á¹û¶ÏÑԺͷþÎñÆ÷·µ»ØÄÚÈÝÌáÈ¡
²Î¿¼¡°½á¹û¶ÏÑÔºÍÌáÈ¡·þÎñÆ÷·µ»Ø½á¹û.txt¡±Îĵµ
¢Û¡¡ÓÃÀýÖ´ÐÐÒÀÀµ
È«¾Ö³õʼ»¯ÓÃÀý

×¢£ºÈ«¾Ö³õʼÓÃÀýÔÚrunmodeconfig_ÔËÐл·¾³.confÖнøÐÐÅäÖã¬ÓÅÏÈÓÚÆäËüÓÃÀý±»Ö´ÐÐ

×¢Ò⣺ûÓÐÔòÈ«¾Ö³õʼ»¯ÓÃÀý±£³ÖΪ¿Õ global_cases_str =
µ±°Ñij¸öÓÃÀý×÷(¼ÙÉèΪ¡°ÓÃÀý1¡± )ΪÆäËüÓÃÀýµÄij¸ö²½Ö裬²»ÄÜÂú×ãÐèÇó(±ÈÈçÌṩµÄ½Ó¿ÚÊäÈë²ÎÊýÖµ²»Ò»Ñù)ʱ£¬¿ÉÒÔ¸´Óá°ÓÃÀý1¡±µÄ²½ÖèÐÅÏ¢²¢¶Ô²ÎÊý½øÐÐÊʵ±µÄµ÷Õû
¢Ü¡¡½ûÓÃÓÃÀý

×¢Ò⣺±»½ûÓõÄÓÃÀý²»²ÎÓëÖ´ÐУ¬¼Æ»®£¬ÏîĿҲÊÇÈç´Ë
7¡¢ÔËÐнá¹û


8¡¢Ô´ÂëÏÂÔØ
ÏÂÔØµØÖ·,δע²ágithub£¬Ö±½ÓÍøÅ̹²ÏíÁË:http://pan.baidu.com/s/1o7L6uPO£¬
ÏÂÔØºó½âѹ£¬ÓÃpycharmµ¼ÈëÏîÄ¿¼´¿É£¬±ØÒªÊ±¿ÉÄÜÐèÒªÐÞ¸Ä.idea/workspace.xmlÖÐpython³ÌÐòËùÔÚ·¾¶
9¡¢ËµÃ÷
ʱ¼äÓÐÏÞ£¬¾«Á¦ÓÐÏÞ£¬ÔÝÇҾ͵½Õâ°É£¬ÓÐÐèÒªµÄ¿ÉÒÔ×Ô¼ºÀ©Õ¹¡¢Ð޸Ŀò¼Ü¡£
×¢£ºÄ¿Ç°»¹´æÔÚ¸öbug£¬²âÊÔ±¨¸æÖУ¬ÀàËÆxml¸ñʽ²ÎÊýµÄ²ÎÊýֵûÏÔʾ³öÀ´£¬ÓÐÐËȤµÄ·³ÏÈ×Ô¼º½â¾öÏ¡£
|