• python+request接口自动化框架


    目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的封装实现一定意义上的脚本与用例的脱离!

    robot framework 的安装不过多说明,网上资料比较太多~

    实例:!!!!!

    步骤一:新建项目

    测试项目可以目录或文件存储,格式可以用TXT,TSV或HTML格式, 建议项目选择目录和TXT,这样便于管理

     步骤二:新建测试套

    测试套与测试项目一样,也可以目录和文件存储,格式也可以用TXT,TSV或HTML格式,建议测试套选择文件存储和TXT

    步骤三:新建测试用例

    ————————这一系列的基础支撑组件创建结束后————目录结构为————————

    下面介绍在此框架上如何创建一条用例!!!

    我们知道!rf是由关键字驱动的,而且是由测试库识别测试对象、操作被测试对象的。

    那么怎么使用关键字呢?首先我们需要导入测试库!!!

    步骤四:添加lib,此次需要的应用到的测试库都在截图中,其实也可以用urllib2这个库获取url内容信息 

    ps:json和requests均为python导入的库!(queryPrdodcut.py为我个人封装的一个库)

    可以通过F5件查询lib下的方法,看自己需要使用哪个就选应用哪个

    步骤五,方法应用,按住ctrl就有可以介绍的方法

    步骤六:输出一条场景的case,下面就是我个人创建的一个case(目前以第三库和自己带的方法输出的case)

    1.set variable 代表设置变量2. catenate代表把多个参数组装在一起3.requests.get代表使用resquests库通过get请求获取response4.should be qeual as strings 代表是是否等于期望值是个断言(可以参考新浪博客

    5.log代表查看内容 

    特别说明:通过这个方法可以使用rep.status_code和rep.content

     

    用自带的是不是很繁琐,输入了那么多条才完成了一个请求,因此我封装了一个关于http的get请求库(当然checkValue也是我个人封装的一个函数~)

    具体实现如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    __author__ = 'niuzhigang'

    #!/usr/bin/env python

    #*- coding: UTF-8 -*-

    #encoding=utf-8

    import json

    import  requests

    class queryProduct(object):

        @classmethod

        def interfacetest(self,reqadress,reqinterface,reqc,reqd, floattimeout):

            requrl = reqadress + reqinterface

            print "print requrl --->"+requrl

            header={"content-type":"application/json"}

            reqparams = {'c':reqc, 'd': reqd}

            reqparam = json.dumps(reqparams,encoding='utf-8',ensure_ascii=False)

            print  'print reqparams --->'+reqparam

            timeout = float(floattimeout)

            # get request result

            getrep = requests.get(url=requrl,headers=header, params=reqparams,timeout=timeout)

            print "get req result --->"+getrep.text

            return getrep.text

      

     那么问题来了?怎么使用自己定义的一个库呢?(具体如何开发有点python基础知识就可以了~我也不说了~)

    下面请个人封装的库上场~ 

    PS:自己封装的库可以根据自己需求打印日志~实现方法就是函数中 print即可!!!!

     

    说明:为什么写了timeout = float(floattimeout)---->timeout转float,因为通过rf输入后为字符串型,因此需要转float

    运行rf结果如下:

    步骤七:查看判定结果,执行play键或者F8

     

    ps蓝色的均是超链接可以打开,如:想看具体每个场景case的失败or通过  ------>点击

    可以查看)结果如下:

     补充:目前只实现了接口的基础架构,后续会维护更多如发送报告,email 微信等 还有更多关键字的封装~~~

    当然这个也支持ui自动化如web导入selenium库就可以实现ui自动化

    我也是刚接触rf,希望大家以后多多相互交流交流!!!

    Python接口自动化测试零基础入门到精通(2023最新版)

  • 相关阅读:
    【蓝桥】通关
    【云原生】kubernetes中pod(进阶)
    Java 设置免登录请求接口被拦截问题
    【人工智能】第四部分:ChatGPT的技术实现
    LeetCode 面试题 10.05. 稀疏数组搜索
    视频编码-码率控制CQP/CRF/ABR/CBR/VBV
    【Lua基础 第6章】 Lua 数组、Lua的错误处理、Lua 模块与包、元表(Metatable)和元方法
    如何使用透明贴图实现火焰效果
    一篇文章就能学会的 Redis 的事务
    mysql技术文档--阿里巴巴java准则《Mysql数据库建表规约》--结合阿丹理解尝试解读--国庆开卷
  • 原文地址:https://blog.csdn.net/dq565/article/details/134075751