zoukankan      html  css  js  c++  java
  • python openpyxl、RESTful、Webservice接口 基础知识

    最近 在做接口测试的时候,遇到如下问题:如何通过数据驱动去做批量接口测试呢,我们的测试数据放在哪里去维护?下面整理出相关点,供大家参考

    1、如何维护接口测试数据:放在excel文件中,通过python openpyxl第三方库,读取并写回测试结果。

    #1、编写测试用例,读取测试用例,并写回
    #第三方库 openpyxl
    from openpyxl import load_workbook
    
    #打开工作簿
    wb=load_workbook["test_datas.xlsx"]
    
    #定位表单sheet
    sheet=wb["info"]
    
    #获取单元格cell值
    value=sheet.cell(1,2).value
    
    #修改单元格cell值
    sheet.cell(2,2).value="new"
    
    
    #获取最大行值row、最大列值column
    max_row=sheet.max_row
     max_cow = sheet.max_column
    
    #保存工作簿
    
    wb.save("test_datas.xlsx")

     2、如何对RESTful接口进行,接口请求,并获取返回的json值。用request第三方库,直接把请求体放在json参数里,入参去请求。

    #2、进行RESTful,接口请求
    #requests
    import requests
    global cookies
    
    url = "http://172.17.0.128:15124/mdm/public/query"
    headers = {'Content-Type': 'application/json'}
    datas1={"Request": {"Head": {"LicId": "","ContentType": "text/json","TranCode": "DeptInfo","ServiceVersion":"5.0.2","ContentEncoding": "","Timestamp": "2018-10-19 17:09:55.137","TransferType": "","SecurityContent": "","OrgId": "01","Callback": "","AppId": "HIS0311","Version": "1.1","SecurityPolicy": "","AppType": "PC","MessageId": "EA455467-A04A-4E73-8BE4-190078D3C258"} ,"Body": {"Page":1,"PageSize":30,"Params":[{"key":"deptCode","value":"T234"}]}}} 
    
    #python自带json把字典格式转成json格式
    res=requests.post(url,json=requestbody,headers=headers,cookies=cookies) 
    res.json() 
    
    res=requests.get(url,json=requestbody,headers=headers,cookies=cookies) 
    res.json() 

     3、如何对Wbeservice接口,进行处理?直接通过suds.client的Client()方法,创建webService对象,查看里面的各类接口-->>

    在去service调用方法--->>最后对sax.text格式的返回值,用json.load(escape(res))转化成字典格式,

     #3、进行Webservice,接口请求
    #suds
    from suds.client import Client
    import json
    from xml.sax.saxutils import escape
    
    url = "http://172.17.0.128:15124/mdm/public/ws/MDMService?wsdl"
    operetions=“register”
    msg = '''{"Request":{"Head":{"LicId":"","ContentType":"text/json","TranCode":"hostipal","ServiceVersion":"1.0","ContentEncoding":"","Timestamp":"2018-10-1917:09:55.137","TransferType":"","SecurityContent":"","OrgId":"42504942400","Callback":"","AppId":"CIS","Version":"1.0","SecurityPolicy":"","AppType":"PC","MessageId":"EA455467-A04A-4E73-8BE4-190078D3C258"},"Body":{"Page":1,"PageSize":30,"Params":[{"key":"name","value":"dsnvb","like":1}]}}}'''
    
    
    # 创建一个webservice对象,来调用webservice里面的各类接口
    c=Client(url)
    # print(c)
    
    # .service去调用接口函数方法method, 注:直接把xml参数当成一个字符串来传递就OK
    # 注意SoapUI:xml的格式需要将xml外围增加<![CDATA[xml]]>
    # 注册接口、查询接口、查询调阅接口
    #接口返回类型: <class 'suds.sax.text.Text'>
    if operetions=='register':
        result=c.service.register(msg)
    elif operetions=='query':
        result=c.service.query(msg)
    else:
        result=c.service.querySubscribe(msg)
    
    
    # escape转换成字符类型,json.loads(<json>)转成字典
    result = json.loads(escape(result))
    return result
    
    #factory,去查看参数情况
    # register=c.factory.create("register")
    # print(register)
    
    
    query_msg = '''{"Request":{"Head":{"LicId":"","ContentType":"text/json","TranCode":"hostipal","ServiceVersion":"1.0","ContentEncoding":"","Timestamp":"2018-10-1917:09:55.137","TransferType":"","SecurityContent":"","OrgId":"42504942400","Callback":"","AppId":"CIS","Version":"1.0","SecurityPolicy":"","AppType":"PC","MessageId":"EA455467-A04A-4E73-8BE4-190078D3C258"},"Body":{"Page":1,"PageSize":30,"Params":[{"key":"name","value":"dsnvb","like":1}]}}}'''
    querySubscribe_msg='''{"Request":{"Head":{"LicId":"","ContentType":"text/json","TranCode":"hostipal","ServiceVersion":"1.0","ContentEncoding":"","Timestamp":"2018-10-1917:09:55.137","TransferType":"","SecurityContent":"","OrgId":"42504942400","Callback":"","AppId":"CIS","Version":"1.0","SecurityPolicy":"","AppType":"PC","MessageId":"EA455467-A04A-4E73-8BE4-190078D3C258"},"Body":{"Page":1,"PageSize":30,"Params":[{"key":"name","value":"dsnvb","like":1}]}}}'''
        res=t.webservice_suds(url,register_msg,"register")
        print(res)
        print(type(res))
    

     
  • 相关阅读:
    java异常
    Map集和
    获取每个字符出现的次数
    从1-33号球中选取6个红球,且红球数字最多重复不超过3个 从1-16号球中选取一个篮球 由红球和蓝球共同组成一个双色球号码,且红球在左边(按照升序排列),篮球在右边。
    gitlab介绍及使用
    Maven使用介绍
    IDEA集成开发环境安装git,修改代码后文件变色代表的含义
    大数据相关
    开源镜像站汇总
    MySQL配置文件详解
  • 原文地址:https://www.cnblogs.com/xyao1/p/10972162.html
Copyright © 2011-2022 走看看