栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

RobotFramework进阶(二)集成Pycharm及Api自动化用例编写

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RobotFramework进阶(二)集成Pycharm及Api自动化用例编写

前言

本章主要讲述pycharm中,利用【Robotframework】进行api自动化用例编写

其中重点是 【自定义关键字/自定义类库/参数化数据】 的使用,大家把这个搞懂了,robot基本就掌握的差不多了,接下来我就打算搭建整个项目了
如果有问题评论或私信都可

  • 关于pycharm集成部分,上篇blog中已经讲解,详细请看:
    https://blog.csdn.net/Makasa/article/details/125752741?spm=1001.2014.3001.5502

一、相关依赖下载
pip install -U requests
pip install -U robotframework-requests



二、api用例编写
  • robotframework-request :https://github.com/MarketSquare/robotframework-requests#readme
  • 关键字查询:http://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html


1、简单api用例编写
  • 后台服务:http://192.168.3.105:8888,是我之前搭建的【测试平台】的本地服务,大家可以自行更换地址,如果想实现和我这篇博客一样的效果,可以先看看我之前搭建 【测试平台后端】 的文章,代码已上传github,可以把代码拉下来i自己跑一下

    测试平台搭建专栏:https://blog.csdn.net/makasa/category_11904938.html?spm=1001.2014.3001.5482

  • 注意:断言部分,我简单优化了下,判断返回值状态码,所以需要导入Collections包
*** Settings ***
Library  RequestsLibrary
Library  Collections

*** Test Cases ***
Case-001
    [Documentation]  Post请求_新增测试用例
    Create Session      api        http://192.168.3.105:8888
    ${headers}=  Create Dictionary   Content-Type=application/json
    ${json}=  Create Dictionary   id=2  case_title=测试用例2    remark=测试用例2
    ${resp}=    POST On Session     api     /testcase   json=${json}   headers=${headers}
    ${code}=    Get From Dictionary     ${resp.json()}  code
    Should Be Equal As Strings   ${code}  0

Case-002
    [Documentation]  Get请求_查询测试用例
    Create Session  api      http://192.168.3.105:8888
    ${header}=  Create Dictionary   Content-Type=application/json
    ${params}=    Create Dictionary   id=2
    ${resp}=    GET On Session     api     /testcase   params=${params}
    ${code}=    Get From Dictionary     ${resp.json()}  code
    Should Be Equal As Strings   ${code}  0

2、自定义关键字api用例编写
  • 和UI自动化用例一样,我这边也只是写一个很简单的例子,重点还是思路哈

  • 注意:断言部分,我简单优化了下,判断返回值状态码,所以需要导入Collections包
*** Settings ***
Library  RequestsLibrary
Library  Collections
Suite Setup  Link To
Test Template  Add

*** Test Cases ***
add testcase1   1   测试用例1   测试用例1
add testcase2   2   测试用例2   测试用例2
add testcase3   3   测试用例3   测试用例3

*** Keywords ***
Link To
    Create Session      api     http://192.168.3.105:8888

Add
    [Arguments]  ${id}  ${case_title}   ${remark}
    ${headers}=     Create Dictionary   Content-Type=application/json
    ${json}=     Create Dictionary      id=${id}    case_title=${case_title}    remark=${remark}
    ${resp}=    POST On Session     api     /testcase   json=${json}  headers=${headers}
    ${code}=    Get From Dictionary     ${resp.json()}  code
    Should Be Equal As Strings   ${code}  0

3、api编写之上下接口参数传递
  • 一般情况下,在项目中,我们都需要拿到上个接口的返回值作为下个接口的传参,那这种情况下,我们该如何去编写用例呢,我在下面也写了一个比较简单的例子
简单说下场景,怕大家理解不了:
--> 1、首先调用【查询测试用例接口】,然后目标是想要取得返回值的id
--> 2、在获取返回值id,我们通过【自定义一个类库,并自定义关键字】,然后导入【自定义类库中的关键字】,拿到【测试用例list的第一个id值】
--> 3、然后将这个id存在全局变量中
--> 4、进行删除数据时,从全局变量中拿到这个【id】,传参传过去,进行删除
3.1、自定义类库
  • 之前说过,我们robotframework下载的扩展包统一是存在D:developPython36Libsite-packages下,那我们要自定义类库的话,就需要在这个路径下去进行创建


3.1.1、init.py

from MikasaTestLibrary.Util import util

__version__ = "1.0"


class MikasaTestLibrary(util):
    """
        注意:这个类名一定要和扩展包的文件名一致
    """
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

3.1.2、Util.py
  • 这个类里面是我简单封装的方法
import requests
import json

"""
    自定义类库的方法
"""


class util(object):
    ROBOT_LIBRARY_SCOPE = 'Global'

    def send_api(self, req, tools="requests"):
        """
        对发送接口测试的工具进行封装(可以使用urlib3/requests)
        :param tools:
        :param req:
        :return:
        """
        if tools == "requests":
            return requests.request(**req)

    def get_testcase_list_first_id(self):
   	 	"""
        拿到测试用例列表第一个id
        :return: 
        """
        req = {
            "method": "GET",
            "url": "http://192.168.3.105:8888/testcase",
            "params": {
            }
        }
        res = self.send_api(req)
        res_json = res.json()
        first_id = res_json["msg"]["data"][0]["id"]
        print("res_json:", res_json["msg"]["data"][0]["id"])
        return first_id

3.2、robot用例编写
  • 这里第二个用例的Get请求改一下改为Delete请求,我就懒得再改图片了

*** Settings ***
Library  RequestsLibrary
Library  Collections
Library  MikasaTestLibrary
Suite Setup  Link To

*** Test Cases ***
Get请求_查询测试用例
    [Documentation]  Get请求_查询测试用例
    ${header}=  Create Dictionary   Content-Type=application/json
    ${params}=    Create Dictionary
    ${resp}=    GET On Session     api     /testcase   params=${params}
    ${code}=    Get From Dictionary     ${resp.json()}  code
    ${first_id}=     get_testcase_list_first_id
    Should Be Equal As Strings   ${code}  0
    Set To Dictionary   ${Global}   id=${first_id}

Delete请求_删除测试用例
    [Documentation]  Delete请求_删除测试用例
    ${header}=  Create Dictionary   Content-Type=application/json
    ${first_id}=      Get From Dictionary     ${Global}   id
    ${resp}=    DELETe On Session     api     /testcase   json=${first_id}
    ${code}=    Get From Dictionary     ${resp.json()}  code
    Should Be Equal As Strings   ${code}  0

*** Keywords ***
Link To
    ${g}=   Create Dictionary
    Set Global Variable     ${Global}   ${g}
    Create Session      api     http://192.168.3.105:8888
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号