zoukankan      html  css  js  c++  java
  • RF学习笔记

    1.Create session关键字创建的会话,如果后面的请求(postget)沿用这个会话,则会继承会话的sessionid等。可以用来做登录操作,后面其他的请求不用再登录,就能通过验证。

    2.上传文件的请求,请求头中不能添加Content-Type=application/x-www-form-urlencoded,否则,上传会失败。因此,setup中的登录请求,不要加请求头,在具体的请求中再添加。

    3.RFfor用法:

    :FOR

    ${i}

    in range

    2

    10

     

    log

    ${i}

     

     

     

    Exit for loop if

    ${i} ==4

     

     

    4.RF中使用python语句时,注意变量类型的转变。在RF中所有的变量不用加引号就表示为String类型,比如${v1}=myname,如果在python语句中引用时,一定要在变量上加上单引号或双引号,才表示是字符串,如  ${v2} evaluate “${v1}” + “is”。

    5.RFhttp请求的响应结果是json字符串(python requests库的响应结果为bytes,需要解码为字符串,res.content.decode(“UTF-8”))。

    6.RF中,如果变量为字符串,在语句中把变量当做python语句来执行时,要将变量加上引号,最好是三引号,防止字符串本身含有单引号或双引号出错。如a = “Thit’s all right”${b} evaluate ‘’’${a}’’’.find(“all”)

    7.Python2中编码问题比较复杂,而robotframework又支持python2,因此RF在处理中文时,会出现很多编码问题。

    1)比如,从py文件中读取变量,变量含有中文。这时,应该在变量前加一个u,表示unicode字符串,这样,读取到RF中就会根据系统的默认编码,将unicode变量转换成正常的中文显示。

    support_files = u'E:/测试用文件/压缩文件/ALM测试管理介绍 V1.2.7z'

    2)如果是获取操作系统的路径,路径中有中文,需要将路径用GBK解码成unicode

    ${p}  evaluate os.getcwd().decode('GBK') os

    E:/测试用文件/压缩文件/ALM测试管理介绍 V1.2.7z  #解码的显示

    E:\xbcxbcxcaxf5xcexc4xb5xb5RFxcfxe0xb9xd8STD_UIxd7xd4xb6xafxbbxafSTD_UI3

    3RF导入variablesvariablespython文件,在py文件中不能打印非GBK编码的字符串,否则导致RF程序错误,其他无关的用例也无法运行,无法显示日志。

    8、RF中分支判断的用法(ELSEELSE IF必须要大写,不然不能识别):

    ${day1}

    Run Keyword If

    ${day}'.startswith('0')

    evaluate

    ${day}'[1]

    ELSE

    evaluate

    ${day}

    9、RF中编写上传文件的接口,如果请求中不填headersdata用字典格式也可以用字符串,如果headers不为空时,就需要把字符串转换成Json格式(RFJson和字典的类型都是dict),不然会报错:ValueError: Data must not be a string

    ${data1}

    to json

    ${data1}

    ${res}

    Post Request

    api2

    /zte-km-cloududm-core/docUpload/sendData

    ${data1}

    files=${file}

    headers=${header}

    10、如何获取列表中的值。${s} = [1, [2, 3, 4] ,5]。如果以变量方式取:${s[1][1]},如果以列表方式取:@{s[1]}[1],如果以列表方式取一维的第2个元素:@{s}[1]。如果在for循环中遍历,则必须以列表方式来获取:FOR  ${i}  IN  @{s}

    11、RFpost接口传参数data有几种方式:(1)直接在参数的位置填写Json格式参数(空是null不是None),如:post  uri  {"name":"Lily",”age”:null};(2)先创建字典,再将字典放在位置参数处(这时候,空是None),如 ${data}  create dictionary {"name":"Lily",”age”:None}post  uri  ${data}

    Post接口传递参数中如果有中文,且中文为关键参数,会报“'latin-1' codec can't encode charactersrequests传递body参数可以是json也可以是json转换之后的二进制。对此有两种办法:1)转换成unicodepayload=json.dumpps(payload)2)转换成二进制,payload=’ {"name":"小丽",”age”:null}’payload=payload..encode(“UTF-8”)。如果本来就行json,则payload=payload.encode("unicode_escape").decode("UTF8")

    12、RFpost接口传参数params2种方式:(1)直接在URL中传;(2)在params中(目前测试的在params中传失败)

    13、RFget接口params参数传递有几种方式:(1)直接在uri问号后面放参数,如:get  /deleteModule?${id}2)以字典的方式传递,如:${param}  create dictionary {"id":"0012"}get  /deleteModule  ${param}

    14、Http传参数总结:Post接口的data参数是json格式字符串,如果传入一个字典格式的参数,会自动转化为json传入;get接口的params是字典格式参数,如果传入json串会直接报错。

    15、RF中接口接受的参数都是字符串格式,如果像列表、字典传入进来要当做列表或字典处理,需要先转换为python的变量(用loadsevaluate,视情况而定)。param1 = [1,2,4]param2 = {“name”:”Lily”}p1 = loads(param1)p2 evaluate param2.

    16、RF中可以进行自定义关键字,文件放在路径:%Python%Libsite-packages。需要注意:文件的名称和类的名称要一模一样。在类中自定义函数,可以添加说明。文件放在正确路径下后,需要重启RF,有时需要重启两遍。然后按F5查看。注意:当自定义文件有语法错误,或者依赖的包不存在时,RF中引用失败。

    17、Json字符串中只能使用双引号,不能使用单引号,比如:

    j = {“namelist”:[‘10237221’]}是错误的,应该用:j = {“namelist”:[“10237221”]}

    18、RF中创建字典有两种方式:

    1)${d} create ditctionary name=Lily

    2)${d} evaluate  {“name”:”Lily”}

    字典中取值有两种方式:

    1)${d[“name”]}

    2)${dv} get from dictionary ${d} name

    错误的方式:&{d}[“name”] &{d[“name”]}

    19、RF中创建列表有两种方式:

    1)${l} create list  1 2 5 7

    2)${l} evaluate [1,2,5,7]

    根据下标取列表中的值有三种方式:

    1)${l[1]}

    2)@{l}[1]

    3)${lv} get from list ${l} 1

    遍历列表中的值时,必须用@{l}  :FOR ${i} in @{l}

    20、RF中自定义函数,函数有返回值时,需要在RF里面判断返回是否为空或False,使用关键字 Run Keyword If。如果函数返回的是json串时,json可能为空,当为空时判断为false。那么在自定义函数中,当json为空时,就不能返回False或直接 return(之间return时返回的是None),判断时,语句为:Run Keyword If  not ‘${flag}’ fail,需要将变量用单引号引起来,不然返回不为空时,会将返回的字符串视为变量,而报变量未定义的错误。因为用引号引起来,如果返回FalseNone时,结果视为字符串了。

    21、RF内置库路径:D:Python27Libsite-packages obotlibraries,比如collectionsbuiltIndatetime

    22、引用python库:

    ${sqlstr} evaluate re.sub(r'dm_count_by_type_14_2','${dm_name}',"${sqlstr}")  re

  • 相关阅读:
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 · Ink
    dotnet Framework 源代码 · Ink
    dotnet core 用值初始化整个数组
    dotnet core 用值初始化整个数组
    dotnet core 隐藏控制台
    dotnet core 隐藏控制台
    PHP mt_rand() 函数
    PHP mt_getrandmax() 函数
  • 原文地址:https://www.cnblogs.com/yahutiaotiao/p/9454996.html
Copyright © 2011-2022 走看看