自动化 | PYTHON接口自动化测试--使用EXCEL进行测试用例执行与测试结果写入


转自:https://www.freesion.com/article/3046426995/

1.为了更好的实现读取excel文件进行接口自动化测试,将操作excel文件方法封装:


   
   
  
  
  1. # coding:utf-8
  2. import xlrd
  3. from xlutils.copy import copy # 导入xlutils的copy方法
  4. class HandleExcel:
  5. """封装操作excel的方法"""
  6. def __init__(self, file='E:/PyChram项目集合/interfacetest/excel/30.xls', sheet_id=0):
  7. self.file = file
  8. self.sheet_id = sheet_id
  9. self.data = self.get_data()
  10. # 为了在创建一个实例时就获得excel的sheet对象,可以在构造器中调用get_data()
  11. # 因为类在实例化时就会自动调用构造器,这样在创建一个实例时就会自动获得sheet对象了
  12. # 获取某一页sheet对象
  13. def get_data(self):
  14. data = xlrd.open_workbook(self.file)
  15. sheet = data.sheet_by_index(self.sheet_id)
  16. return sheet
  17. # 获取excel数据行数
  18. def get_rows(self):
  19. rows = self.data.nrows
  20. # t = self.get_data() # 调用get_data()取得sheet对象(如果不在构造器获取sheet对象,就需要在方法内先获取sheet对象,再进行下一步操作,每个方法都要这样,所以还是写在构造器中方便)
  21. # rows = t.nrows
  22. return rows
  23. # 获取某个单元格数据
  24. def get_value(self, row, col):
  25. value = self.data.cell_value(row, col)
  26. return value
  27. # 向某个单元格写入数据
  28. def write_value(self, row, col, value):
  29. data = xlrd.open_workbook(self.file) # 打开文件
  30. data_copy = copy(data) # 复制原文件
  31. sheet = data_copy.get_sheet( 0) # 取得复制文件的sheet对象
  32. sheet.write(row, col, value) # 在某一单元格写入value
  33. data_copy.save(self.file) # 保存文件
  34. # 封装excel的列名常量
  35. def get_caseseq():
  36. """获取caseSeq"""
  37. caseSeq = 0
  38. return caseSeq
  39. def get_apitype():
  40. """获取apiType"""
  41. apiType = 1
  42. return apiType
  43. def get_apiseq():
  44. """获取apiSeq"""
  45. apiSeq = 2
  46. return apiSeq
  47. def get_apiName():
  48. """获取apiName"""
  49. apiName = 3
  50. return apiName
  51. def get_priority():
  52. """获取priority"""
  53. priority = 4
  54. return priority
  55. def get_url():
  56. """获取url"""
  57. url = 5
  58. return url
  59. def get_method():
  60. """获取method"""
  61. method = 6
  62. return method
  63. def get_header():
  64. """获取header"""
  65. header = 7
  66. return header
  67. def get_purpose():
  68. purpose = 8
  69. return purpose
  70. def get_params():
  71. """获取params"""
  72. params = 9
  73. return params
  74. def get_expectvalue():
  75. """获取expectValue"""
  76. expect = 10
  77. return expect
  78. def get_resultvalue():
  79. result = 11
  80. return result
  81. if __name__ == '__main__':
  82. test = HandleExcel()
  83. print(test.get_data())
  84. print(test.get_rows())
  85. print(test.get_value( 0, 0))

2.将操作excel的方法封装好后,准备接口用例来遍历循环

其中:

        caseSeq:用例编号

        apiType:接口类型

        apiSeq:接口编号

        apiName:接口名称

        priority:优先级

        url:接口调用地址

        method:协议方法

        header:请求头

        purpose:用例描述

        params:接口参数

        expectValue:期望结果

        resultValue:测试结果

3.编写主函数代码,实现接口用例遍历并将测试结果写入excel表中


   
   
  
  
  1. # coding:utf-8
  2. from mylib.run_method import RunMain
  3. from mylib.handle_excel import *
  4. import json
  5. class RunTestCase:
  6. def __init__(self):
  7. self.Runmain = RunMain() # 实例化调用get/post请求基类
  8. self.data = HandleExcel() # 实例化操作excel文件类
  9. def go_run(self):
  10. rows_count = self.data.get_rows() # 获取excel行数
  11. for i in range( 1,rows_count): # 利用行数进行迭代处理每个接口
  12. url = self.data.get_value(i, get_url()) # 循环获取url的值
  13. print(url)
  14. method = self.data.get_value(i, get_method()) # 循环获取method的值
  15. print(method)
  16. if self.data.get_value(i, get_params()) == '':
  17. data = None
  18. else:
  19. data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数,并将得到的数据反序列
  20. expect = self.data.get_value(i, get_expectvalue()) # 循环获取期望输出
  21. is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断excel中priority是不是"H"
  22. if is_run == 'H':
  23. res = self.Runmain.run_main(url, method, data) # 调用get/post主函数
  24. print(res)
  25. if expect in res:
  26. print( '测试成功')
  27. self.data.write_value(i, get_resultvalue(), 'pass')
  28. else:
  29. print( '测试失败')
  30. self.data.write_value(i, get_resultvalue(), 'fail')
  31. if __name__ == '__main__':
  32. run = RunTestCase()
  33. run.go_run()

运行结果如下:

excel表格中填入如下:

       本篇简单的使用excel进行接口测试用例的执行,在测试过程中最重要的是测试用例的编写,在遇到不同的测试用例执行时会出现不同的问题,还需要多使用多练习,按照实际进行Python接口自动化测试用例编写。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM