谢谢@小麦苹果的提醒,才发现我借口测试少写了一个文件,今天给大家补上:

common->service->excel_case_data.py
  1. # coding: utf-8
  2. import json
  3. import sys
  4. import logging
  5. import setting
  6. import requests
  7. from common.module import excel_module
  8. from common.module import requests_module
  9. from common.module import environment_module
  10. sys.path.append("..")
  11. class ExcelData():
  12. def __init__(self):
  13. self.url = ''
  14. self.method = ''
  15. self.data_send = ''
  16. self.expect_res = ''
  17. self.data = ''
  18. self.case_url = ''
  19. self.case_input = ''
  20. self.content_type = ''
  21. def get_case_data(self, file_name, sheet_index=0, row_id=0, data=None, **kwargs):
  22. """
  23. 1、获取对应id的行的内容
  24. 2、获取url
  25. 3、获取请求方式
  26. 4、获取请求参数,并进行转码
  27. 5、获取预期结果
  28. 6、获取string类型的response
  29. :param file_name: xlsx文件名
  30. :param sheet_index: sheet索引
  31. :param row_id: 行索引
  32. :param data: 不用Excel表里的数据,自己传
  33. :param kwargs: 替换excel表里的某个key的value
  34. :return: expect_res, actual_res
  35. """
  36. # 读取Excel
  37. excel_handle = excel_module.ReadExcel(file_name)
  38. # 获取指定sheet
  39. sheet = excel_handle.get_sheet_by_index(sheet_index)
  40. # 读取指定行
  41. case_data_list = excel_handle.get_row_values(sheet, row_id)
  42. # 获取第row_id行第2列的数据
  43. path = case_data_list[1]
  44. print "path: ", path
  45. self.get_url(path)
  46. print self.get_url(path)
  47. # ID、Path、Request、Input、Expect、content-type、Remark
  48. # 获取发送方式(Request)
  49. self.method = case_data_list[2]
  50. self.data_send = case_data_list[3]
  51. # 字符串转字典
  52. if self.data_send != '':
  53. self.data = json.loads(self.data_send, encoding='utf-8')
  54. logging.info(self.data_send)
  55. if kwargs is not None:
  56. for i in kwargs:
  57. for j in self.data:
  58. # 如果传参key和发送内容key相同,则替换Excel表中的对应key的value
  59. if i == j:
  60. self.data[j] = kwargs[i]
  61. if data is not None:
  62. self.data = data
  63. expect_res = self.get_expect_data()
  64. # 遍历传参,如果有cookie字段则将该cookie赋值给access_token
  65. access_token = ''
  66. for i in kwargs:
  67. if i == 'cookie':
  68. access_token = kwargs[i]
  69. if (access_token.strip() == ''):
  70. actual_res = self.get_actual_data()
  71. else:
  72. actual_res = self.get_actual_data(access_token=access_token)
  73. return expect_res, actual_res
  74. def get_case_input(self, file_name, sheet_index=0, row_id=0):
  75. """
  76. 获取输入数据
  77. :param file_name: 文件路径
  78. :param sheet_index: sheet索引
  79. :param row_id: 行索引
  80. :return: Excel表中的传入数据
  81. """
  82. excel_handle = excel_module.ReadExcel(file_name)
  83. sheet = excel_handle.get_sheet_by_index(sheet_index)
  84. case_data = excel_handle.get_row_values(sheet, row_id)
  85. self.data = case_data[3]
  86. return self.data
  87. def get_url(self, path):
  88. pathStr = str(path)
  89. self.url = environment_module.Environment_module().get_env_url('login') + path
  90. def get_expect_data(self):
  91. logging.debug("=============Expect============" + self.expect_res)
  92. return self.expect_res.encode('utf-8')
  93. def get_actual_data(self, **kwargs):
  94. # headers = setting.REQUEST_HEADER
  95. # headers['Content-Type'] = self.content_type['Content-Type']
  96. # for i in kwargs:
  97. # if i == "access_token":
  98. # headers['Cookies'] = kwargs[i]
  99. actual_res_handle = requests_module.GetResponse(self.url, method=self.method)
  100. actual_url = actual_res_handle.get_response(data=self.data)
  101. res_analysis = requests_module.AnalysisResponse(actual_url)
  102. actual_res = res_analysis.Str_Content
  103. cookies = requests.utils.dict_from_cookiejar(res_analysis.Cookies)
  104. # logging.debug(u"===============data==============") + json.dumps(self.data)
  105. logging.debug((u"===========实际返回的数据为:%s============") % actual_res)
  106. return actual_res, cookies

读取excel文件的方法。

微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

接口测试框架——第六篇-读Excel封装方法的更多相关文章

  1. 接口测试框架——第四篇-url、excel内容等

    到现在为止,发送邮件(email_module).读excel(excel_module).发送requests(requests_module).常量(setting)我们都已经完成了,看看第一篇中 ...

  2. Auty自动化测试框架第六篇——垃圾代码回收、添加suite支持

    [本文出自天外归云的博客园] 垃圾代码回收 添加脚本恢复机制,因为框架会自动生成一些代码,如果代码生成后出现问题导致代码没有正常删除掉,则会造成代码垃圾,在auty目录添加recovery.py文件: ...

  3. Spring框架第六篇之Spring与DAO

    一.Spring与JDBC模板 1.搭建环境 首先导入需要的jar包: 以上jar中多导入了DBCP和C3P0的jar包,因为这里需要演示怎么配置多种数据源,所以导入了这两个包,在实际开发中无需导入这 ...

  4. 接口测试框架——第三篇:发送(requests)

    把下面的代码放在requests_module.py文件中 # coding: utf-8 import requests import logging from requests.exception ...

  5. NFine框架JqGrid导出选中行为Excel实现方法

    客户端 function PostAndGetFileByUrl(url,type,postdata) { var temp; $.ajax({ url: url, type: type, data: ...

  6. 接口测试框架——第二篇-python读取excel文件内容

    今天完善excel_module.py文件,上代码: # coding: utf-8 import xlrd class ReadExcel(): def __init__(self, file_na ...

  7. python_reques接口测试框架,Excel作为案例数据源

    一.框架菜单 1.1 common模块  1.2 其他 二.Excel接口测试案例编写 三.读取Excel测试封装(核心封装) excel_utils.py  读取Excel中的数据 import o ...

  8. python接口测试框架遇到的坑(一)excel数字转文本

    一.遇到的问题 python编写接口测试框架中,接口用例使用excel维护,其中预期值(code码的值)20000和实际值总是不一致,后来通过打印type发现一个是unicode,一个是float. ...

  9. 《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)

    1.简介 从这一篇开始介绍和分享Java+Selenium+POM的简单自动化测试框架设计.第一个设计点,就是支持跨浏览器测试. 宏哥自己认为的支持跨浏览器测试就是:同一个测试用例,支持用不同浏览器去 ...

随机推荐

  1. oracle 11g安装过程中问题:移动bin\oralbac11.dll 到bin\oralbac11.dll.dbl出错

    解决方法: 直接找到oralbac11.dll.dbl这个文件,将其删除即可.   http://blog.sina.com.cn/s/blog_51beaf0e0101000v.html

  2. 10.彻底理解ReentrantLock

    1. ReentrantLock的介绍 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该 ...

  3. hack games

    记下,有时间玩玩~ wargame http://www.wechall.net/lang_ranking/en --------------- Monyer系列(黑客游戏) 1. http://mo ...

  4. net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory!

    Caused by: net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, b ...

  5. struts.xml路径修改后的web配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" ...

  6. DNS智能解析的搭建与配置

    分类: LINUX 原文地址:DNS智能解析的搭建与配置 作者:十年梦生  9月份整整忙了一个月,都抽不出时间来写篇文章,这几天趁着10.1终于有时间来写些东西了,将9月份所做的一些东西来做下总结. ...

  7. redis的String类型以及其操作

    Redis的数据类型 String类型以及操作 String是最简单的数据类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或 ...

  8. 20165210 《网络对抗技术》week1 exp0 kali安装与配置

    20165210 <网络对抗技术>week1 exp0 kali安装与配置 1. 安装过程: 从kali官网上下载如下图所示: 下载完成后打开VMware 点击创建新的虚拟机 弹出新虚拟机 ...

  9. Python程序员不完全指南

    Python 基础 Python基础 基础数据类型 深浅copy 文件操作 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 各种推导式 递归函数 内置函数和匿名函数 异常处理 常用模块 模块和包 ...

  10. vue和react

    1. 数据渲染 vue是使用template模板进行渲染,react使用的是jsx语法,对组件进行渲染 vue模板中使用{{ this.data }} 双括号包着变量,代表变量表示的值.外面那层表示需 ...