1.Create session关键字创建的会话,如果后面的请求(post或 get)沿用这个会话,则会继承会话的sessionid等。可以用来做登录操作,后面其他的请求不用再登录,就能通过验证。
2.上传文件的请求,请求头中不能添加Content-Type=application/x-www-form-urlencoded,否则,上传会失败。因此,setup中的登录请求,不要加请求头,在具体的请求中再添加。
3.RF中for用法:
:FOR | ${i} | in range | 2 | 10 |
... | log | ${i} |
|
|
4.RF中使用python语句时,注意变量类型的转变。在RF中所有的变量不用加引号就表示为String类型,比如${v1}=myname,如果在python语句中引用时,一定要在变量上加上单引号或双引号,才表示是字符串,如 ${v2} evaluate “${v1}” + “is”。
5.RF中http请求的响应结果是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:\\xbc\xbc\xca\xf5\xce\xc4\xb5\xb5\RF\xcf\xe0\xb9\xd8\STD_UI\xd7\xd4\xb6\xaf\xbb\xaf\STD_UI3
(3)RF导入variables,variables是python文件,在py文件中不能打印非GBK编码的字符串,否则导致RF程序错误,其他无关的用例也无法运行,无法显示日志。
8、RF中分支判断的用法(ELSE必须要大写,不然不能识别):
${day1} | Run Keyword If | ${day}'.startswith('0') | evaluate | ${day}'[1] | ELSE | evaluate | ${day} |
9、RF中编写上传文件的接口,如果请求中不填headers,data用字典格式也可以用字符串,如果headers不为空时,就需要把字符串转换成Json格式(RF中Json和字典的类型都是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、RF中post接口传参数data有几种方式:(1)直接在参数的位置填写Json格式参数(空是null不是None),如:post uri {"name":"Lily",”age”:null};(2)先创建字典,再将字典放在位置参数处(这时候,空是None),如 :${data} create dictionary {"name":"Lily",”age”:None},post uri ${data}
12、RF中get接口params参数传递有几种方式:(1)直接在uri问号后面放参数,如:get /deleteModule?${id};(2)以字典的方式传递,如:${param} create dictionary {"id":"0012"},get /deleteModule ${param}
13、Http传参数总结:Post接口的data参数是json格式字符串,如果传入一个字典格式的参数,会自动转化为json传入;get接口的params是字典格式参数,如果传入json串会直接报错。
14、RF中可以进行自定义关键字,文件放在路径:%Python%\Lib\site-packages。需要注意:文件的名称和类的名称要一模一样。在类中自定义函数,可以添加说明。文件放在正确路径下后,需要重启RF,有时需要重启两遍。然后按F5查看。