Robot Framework接口测试总结

基础篇:https://www.jianshu.com/p/fe368461e3a0

1、RobotFramework 接口测试-不定参数问题

用RobotFramework 做接口自动化,这个时候,如果你不确定需要传几个参数该怎么办? 

或者接口里面的参数太多,我们参数化的时候,太麻烦

test    #test为keyword

    [Arguments]    ${info}

    ${data}    create dictionary

    :FOR    ${key}    IN    @{info.keys()}    #获取info字典中key的所有值

    \    set to dictionary    ${data}    ${key}    ${info['${key}']}

    log    ${data}

test01

    ${dict}    create dictionary    a=1    b=2    c=3

    ${dict2}    create dictionary

    test    ${dict}

     test    ${dict2}

将${dict}传递进test中。运行test01,输出:

${dict} = {"a": "1", "b": "2", "c": "3"}

${data} = {}

{"a": "1", "b": "2", "c": "3"}

${dict} = {}

${data} = {}

{}

2、Robot Framework分层(网上资料少,自己分出来的,很多不足,希望大家一起讨论)


Robot Framework接口测试总结_第1张图片


Robot Framework接口测试总结_第2张图片


Robot Framework接口测试总结_第3张图片

总结下就这张图了。@~@

3.序列化非ascii码中文

>>> ${json}= set variable    ${resp.json()}

${json} = {u'msg': u'\u53c2\u6570shopId\u5fc5\u586b'}

>>> ${json}    Dumps    ${json}    ensure_ascii=${False}

${json} = {"msg": "参数shopId必填"}

4.post请求 需要传递中文数字时:


如果请求数据类型为json且带有中文,传递过去会出现乱码。解决办法两部:

1.${header}    Create Dictionary     Content-Type=application/x-www-form-urlencoded     #需要加这段

2.${info}     Dumps     ${info}     ensure_ascii=${False} #传递中文需要转译    #${info}为上图蓝色区域

create   session      api    ${Url["xfdb"]}    #${Url["xfdb"]}代表某个url

${resp}     post request     api    ${Url["xfdb1"]}    carDealerApplyParam=${info}    headers=${header}  


Robot Framework接口测试总结_第4张图片
图1

如图1:这样的方式传递是不需要使用上述步骤


5.在RF中调用.py文件,使用文件中的方法。

方法一:

Robot Framework接口测试总结_第5张图片

输出:

Robot Framework接口测试总结_第6张图片
Robot Framework接口测试总结_第7张图片

注意:这种情况是通过suit全局调用了此py文件,每个case中都可以用,但是有时候只需要单个case中用到可以用方法二。

方法二:


Robot Framework接口测试总结_第8张图片
图2


Robot Framework接口测试总结_第9张图片

如图2所示:使用import library  文件地址

6.封装自己的关键字

1. mac电脑:在python安装路径 :/Library/Python/2.7/site-packages下创建一个自己的文件夹,用于放自定义的library库,例如:yyqRFLibrary。

1.创建__init__.py:


Robot Framework接口测试总结_第10张图片
创建__init__.py

2.创建test.py:


Robot Framework接口测试总结_第11张图片
创建test.py

3.在RF上导入Library

Robot Framework接口测试总结_第12张图片
导入yyqRFLibrary

4.导入之后可以在查看关键字的用法(mac:fn+F5):


Robot Framework接口测试总结_第13张图片
查看关键字的用法

例子:

Robot Framework接口测试总结_第14张图片
例子

这样就封装了一个自己的关键字。

7.传递参数的结构


Robot Framework接口测试总结_第15张图片
图1


Robot Framework接口测试总结_第16张图片
图2


Robot Framework接口测试总结_第17张图片
图3

总结:params后面的参数是放在Query String中。data后面的参数是放在Form。必须加headers。否则data的参数放不进去

8.请求的数据是一串复杂的json

比如:


Robot Framework接口测试总结_第18张图片
图一

如图一。如果要传递进请求中,可能需要不断的拼接,创建list,很繁琐。可以直接使用上节提到的evaluate。


图二

9.处理响应数据

${resp}     post request     api    ${Url["xfdb1"]}    carDealerApplyParam=${info}    headers=${header}  

${resp} 可以理解为一个接口响应回来的对象。可以调用其内部的许多方法实现输出不同的数据。

['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__iter__', '__module__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'elapsed', 'encoding', 'headers', 'history', 'is_permanent_redirect', 'is_redirect', 'iter_content', 'iter_lines', 'json', 'links', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']

content: 响应body的内容,二进制编码,如果返回只有文本内容,和text差不多

cookies:响应回写的cookies,cookieJar类对象

headers: 响应头内容

json(): 响应body内容,json格式

status_code: 状态码

text: 响应body的内容,默认unicode编码

log    ${resp.json()}    #输出响应的json格式数据

${json1}    Dumps       ${json}      ensure_ascii=${False}    #这个json数据带中文时,可以使用此方法让其显示中文

你可能感兴趣的:(Robot Framework接口测试总结)