zoukankan      html  css  js  c++  java
  • Python 3 读取和存储Excel数据(应用到接口测试)

    1、利用cmd命令安装第三方库

      openpyxl  同时支持读写操作,支持的Excel是以.xlsx结尾的文件。

       命令: pip install openpyxl

       【命令:pip install requests (安装http请求requests也是一样的)】

    2、新建Excel文件

      新建Excel的时候,需要在电脑上新建一个后缀为xlsx的文件,再通过复制粘贴的方式放到PyCharm工具里边。

                                 ------复制粘贴---------->

    3、操作工作簿

      引入工具包:from openpyxl import load_workbook

      打开工作簿:open_wb=load_workbook('demo_excel.xlsx')        #传一个工作簿名称参数

      定位表单:sheet=open_wb['Sheet1']                #传一个表单名,也可使用get方式获取表单

      定位坐标:value=sheet.cell(1,3).value             #获取到第一行第三列的值

      更新数据:sheet.cell(5,3).value='abc'               #将第五行第三列的值改为abc

      保存工作簿(一般放最后):

      open_wb.save('demo_excel.xlsx') 

      #调用save方法保存,但值得注意的是, 当数据更新时,需要关闭Excel表方可保存成功。

     4、接口测试:

    学习以上知识之后,我们怎么通过Python操作Excel做接口测试?get / post

    (可以结合jmeter做接口测试对应记忆)

      import requests

      url='http://.........com'                     #URL地址

      req=requests.get(url)               #发起get请求

      req=requests.post(url)              #发起post请求

      login_data={“mobilephone”:“183.。。。”,”pwd”:“123”}          #传参:http请求是以字典形式传入的

    下一个请求若需要鉴权,则需要从上一个请求中获取及在下一个请求去发送cookie、session、token,则需要接下来这些操作:  

      从返回的结果中获取cookie:(注:Python只识别:cookies,而不是cookie)

      假如此处是个简单的下单(我们用pay表示)操作:

      pay_url="http://........." 

      pay_data={通过字典传参}

      pay_req=requests.get(参数1,参数2,cookies=req.cookies)   

            #这种方法只识别前2个值,所以传入cookie只能以上边的方法传入。

    查看结果(两种方法):(http请求返回的数据格式:json、xml、html)

      1、res=req.text         #三种结果都可以返回

      2、res=req.json()      #json只能返回结果是json格式的

    我们也可以通过session方式传值:(只能传入1个参数)

    s=requests.session               #用一个s来接收返回的结果,以后我们在进行请求时,都用s去传。

    pay_response=s.get(参数1,params=参数2)   

     那么,理解上述的知识后,我们用函数及参数化,就可以做这个简单的接口测试了。

    首先,创建好我们的测试用例:以下边这个表格为例(注:写测试用例时,返回结果及比对结果为空)。

    然后,通过我们的pycharm写入执行用例的代码,就可以妥妥的做接口测试啦。

    #Python读取Excel数据的函数方法:

    from openpyxl import load_workbook

    def demo_excel(file_name,sheet_name,start,end):

      open_wb=load_workbook(file_name)

      sheet=open_wb[sheet_name]

      data_list=[]

      for i in range(start,end):

        data_dict={}

        data_dict['ID']=sheet.cell(i,1).value

        data_dict['TITLE']=sheet.cell(i,2).value

        data_dict['METHOD']=sheet.cell(i,3).value

        data_dict['URL']=sheet.cell(i,4).value

        data_dict['DATA']=sheet.cell(i,5).value

        data_dict['CODE']=sheet.cell(i,6).value

        data_list.append(data_dict)

      return data_list

    t=demo_excel('demo_excel.xlsx','Sheet1',2,6)

     #发起http请求的函数方法:

    import requests

    cookie=None

    def http_request(req_url,req_data,method):

      global cookie

      if method=='get':

        response=requests.get(req_url,req_data,cookies=cookie)

      else:

        response=requests.post(req_url,req_data,cookies=cookie)

      if response.cookies!={}:

        cookie=response.cookies

      result=response.text()

      return result

     #执行测试用例:

    open_wb=load_workbook('demo_excel.xlsx')

    sheet=open_wb['Sheet1']

    for item in t:

      print('正在执行第{0}条用例:{1}'.format(item['ID'],item['TITLE']))

      url=item['URL']

      data=item['DATA']

      method=item['METHOD']

      result=http_request(url,eval(data),method)

      print(result)

    #返回结果:

      sheet.cell(item['ID']+1,7).value=str(result)

    #结果比对:

      if result['code']==str(item['CODE']):

        RESULT='PASS'

      else:

        RESULT='FAIL'

      sheet.cell(item['ID']+1,8).value=RESULT

    open_wb.save('demo_excel.xlsx')

        

      

      

  • 相关阅读:
    增强资源管理器右键功能,含源代码
    VC中结构体的内存布局
    进程间共享句柄三种方式
    Delphi获取CPU CPUID《转》
    Delphi中判断WebBrowser的页面是否加载完成 《转》
    Delphi 防止程序多次运行《转》
    界面显示后延时运行代码《转》
    界面显示后延时运行代码《转》
    DIV布局-DIV高度不同自动换行并对齐《转》
    Delphi 语句块《LceMeaning》
  • 原文地址:https://www.cnblogs.com/fantastic-21/p/9727339.html
Copyright © 2011-2022 走看看