<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Robot Framework開發(fā)系統(tǒng)關(guān)鍵字詳細(xì)

      本文的目的,是記錄如何在rf下,開發(fā)屬于自己的庫函數(shù)(又稱之系統(tǒng)關(guān)鍵字)

      1、首先在..\Python27\Lib\site-packages目錄下創(chuàng)建自定義庫目錄如Verification_Library,用于放自定義的library庫。

      2、在自定義文件夾Verification_Library中新建一個"version.py"文件,用于描述自定義測試庫的版本信息。
      代碼如下:

      VERSION='1.0'

       

      3、在自定義庫的文件夾Verification_Library下,新建一個keywords類,如文件名:verification.py, 測試類別為:Verfication  詳細(xì)如下:

      (本實例的目的,實現(xiàn)對傳入的json格式的data數(shù)據(jù)進(jìn)行校驗--應(yīng)用場景,主要是針對http request庫返回的response中的data數(shù)據(jù)進(jìn)行校驗):

      __author__ = 'Administrator'
      #coding=utf-8
      #腳本作用:公共json數(shù)據(jù)校驗方法,遍歷data數(shù)據(jù),校驗字符串及整型數(shù)值
      
      
      import logging
      
      
      data={"classify":
          [{
          "id":1,
          "name":"XX"
          }],
          "test":{},
          "hotSongs":[{
                  "songId" : 2,
                  "songName" :"ddd",
                  "singerId" : 3,
                  "singerName" :"aaa",
                  "hash" : "435B50137E16526DFF5BB10DA13A2A4D",
                  "climaxHash":"E0B5EA5454B5E651C609CE7B713E32F3",
                  "startTime" : 104000,
                  "endTime" : 125000,
                  "krc" : "but I just can't make a sound",
                  "singerImg" : "20111226113925990226.jpg"
            },
                      {
                  "songId" : 3,
                  "songName" :"ddd",
                  "singerId" : 4,
                  "singerName" :"aaa",
                  "hash" : "435B50137E16526DFF5BB10DA13A2A4D",
                  "climaxHash":"E0B5EA5454B5E651C609CE7B713E32F3",
                  "startTime" : 104000,
                  "endTime" : 125000,
                  "krc" : "but I just can't make a sound",
                  "singerImg" : "20111226113925990226.jpg"
            }]
      }
      
      data1={     "songId" : 2,
                  "songName" :"ddd",
                  "singerId" : 3,
                  "singerName" :"aaa",
                  "hash" : "435B50137E16526DFF5BB10DA13A2A4D",
                  "climaxHash":"E0B5EA5454B5E651C609CE7B713E32F3",
                  "startTime" : 104000,
                  "endTime" : 125000,
                  "krc" : "but I just can't make a sound",
                  "singerImg" : "20111226113925990226.jpg"
            }
      
      class Verfication(object):
      
          def verfication_data(self,data,msg=None):
              '''
              1、驗證傳入的參數(shù),如果為字典,則遍歷字典中的各個key,判斷各個key值,如果為字符串型,則校驗字符串為非空,如果為整型,則校驗字符串大于0
              2、如果傳入的參數(shù)為列表,則將列表中各個參數(shù)取出,如果列表中各個參數(shù)為字典,處理方法參照第1步。
              '''
              if isinstance(data,dict):
                  logging.info("---基本信息獲取---")
                  logging.info("傳入的data為json對象!")
                  logging.info('傳入過來的json對象主key的長度:%s'%len(data))
                  keys=data.keys()
                  logging.info(keys)
                  logging.info('---開始進(jìn)行校驗---')
                  #定義變量,計算遍歷次數(shù)
                  times=0
                  for key,value in data.iteritems():
                      times=times+1
                      logging.info("")
                      logging.info("---傳入的data數(shù)據(jù),第%s對象元素,key值對應(yīng)為:%s---"%(times,key))
                      logging.info('%s:%s' % (key, value))
                      self.analysis_subItem(value,msg)
      
              else:
                  print type(data)
                  logging.info("傳入的data數(shù)據(jù)不是dict對象")
      
      
          #判斷value值對應(yīng)的類型,從而進(jìn)行相應(yīng)的處理,嵌入遞歸函數(shù)
          def analysis_subItem(self,item,msg):
              '''
              1、不管value值取出如何,最終還是拆解成最小單元,字符串或者是整型來進(jìn)行判斷
              :return:
              '''
              if isinstance(item,str):
                  if self.get_length(item) == 0:
                      raise AssertionError(msg or "'%s' should not be empty." % str)
              elif isinstance(item,int):
                  if int(item)<=0:
                      raise AssertionError("當(dāng)前int型獲取到的數(shù)字小于等于0")
      
              elif isinstance(item,list):
                     value_list_len=len(item)
                     logging.info('%s對應(yīng)值的類型為list且長度為%s'%(item,value_list_len))
                     for i in range(value_list_len):
                         logging.info("")
                         logging.info("內(nèi)嵌的列表中,第%s個子元素"%(i+1))
                         self.analysis_subItem(item[i],msg)
      
              elif isinstance(item,dict):
                     value_dict_len=len(item)
                     logging.info('%s對應(yīng)值的類型為dict且長度為%s'%(item,value_dict_len))
                     times=0
                     for subkey,subvalue in item.iteritems():
                          times=times+1
                          logging.info("")
                          logging.info("---內(nèi)嵌的字典中,第%s對象元素,key值對應(yīng)為:%s---"%(times,subkey))
                          logging.info('%s:%s' % (subkey, subvalue))
                          self.analysis_subItem(subvalue,msg)
      
      
          #計算字符串長度
          def get_length(self,item):
                  length =self._get_length(item)
                  logging.info('Length is %d' % length)
                  logging.info("")
                  return length
      
          def _get_length(self,item):
                  try:
                      return len(item)
      
                  except:
                      raise RuntimeError("Could not get length of '%s'." % item)
      
      
      
      if __name__ == '__main__':
          run_object=Verfication()
          run_object.verfication_data(data)

       

      4、對于創(chuàng)建普通的模塊來說這樣已經(jīng)ok了。但要想在robot framework啟動后加載這個關(guān)鍵字,還需要在自定義庫目錄Verification_Library下創(chuàng)建__init__.py文件,用于定義自定義庫的相關(guān)信息和需要用到的keywords調(diào)用繼承和聲明。

      1 __author__ = 'Administrator'
      2 from verification import Verfication
      3 from version import VERSION 
      4 
      5 __version__=VERSION
      6 
      7 class Verification_Library(Verfication):
      8     ROBOT_LIBRARY_SCOPE='GLOBAL'    #此句作用是指該庫運(yùn)行的時候會作用在全局。

      5、啟動ride程序在setting部分添加library庫信息,添加庫名為Verification_Library
      即可成功導(dǎo)入自定義庫。

      注意:
      庫文件夾名稱一定要和__init__文件中的類名稱相同(Verification_Library),否則導(dǎo)入自定義庫時會出錯。

       

      posted @ 2015-11-15 16:01  狂師  閱讀(1584)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 亚洲av午夜福利精品一区二区| 平顶山市| 亚洲欧美日韩综合一区在线| 成人乱码一区二区三区av| 色综合久久综合香蕉色老大| 德安县| 亚洲18禁一区二区三区| 中文字幕日韩有码av| 久久精品国产亚洲av天海翼| 国产精品色内内在线播放| 精品人妻一区二区三区蜜臀| 国产精品人成视频免| 国产麻豆成人精品av| 亚洲一精品一区二区三区| 无遮无挡爽爽免费视频| 精品免费看国产一区二区| 国产亚洲综合另类色专区| 精品国产高清中文字幕| 综合久久婷婷综合久久| 漂亮人妻被中出中文字幕| 日韩av毛片福利国产福利| 亚洲色大成网站WWW久久| 国产精品视频第一第二区| 美女无遮挡免费视频网站| 国产网友愉拍精品视频手机 | 一区二区三区在线色视频| 99RE8这里有精品热视频| 色琪琪丁香婷婷综合久久| 国产精品夫妇激情啪发布| 日韩幕无线码一区中文| 成人片黄网站色大片免费毛片| 国产精品视频全国免费观看 | 窝窝午夜色视频国产精品破| 国产中文字幕精品在线| 国产精品中文字幕日韩| 国内精品久久久久影视| 亚洲熟女乱色一区二区三区| 无人区码一码二码三码区| 国产精自产拍久久久久久蜜| 清纯唯美人妻少妇第一页| 精品人妻av区乱码|