多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

使用python实现接口自动化测试

更新时间:2021-10-22 02:43:01 作者:admin 浏览:348

使用python实现接口自动化测试

  思路:讲接口数据存放在excel文档中,读取excel数据,将每一行数据存放在一个个列表当中。然后获取URL,header,请求体等数据,进行请求发送。

  一、Common与Config包

  Config里面的config.ini主要存放的默认的路径内容等,如excel文件的地址,工作簿名称

  Common里面主要是一些通用的方法,目前只需要读取config里面的数据

  import configparser

  import os.path

  #读取config里面的数据

  class ReadConfig:

  def __init__(self):

  self.filePath = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))+"configconfig.ini"

  print(self.filePath)

  self.config = configparser.ConfigParser()

  self.config.read(self.filePath,encoding='utf-8')

  def get_data(self,section,key):

  return self.config.get(section,key)

  def get_list(self,section):

  return self.config.items(section)

  if __name__ == '__main__':

  conf = ReadConfig()

  print(conf.get_data("excel", "file_path"))

使用python实现接口自动化测试

  二、excel包

  主要是实现读取excel表格数据,此处用的是openpyxl进行实现

  import openpyxl

  class ReadExcel:

  def __init__(self,excel_path,sheet_name):

  self.excel_path = excel_path

  self.sheet_name = sheet_name

  def get_data(self,row):

  workbook = openpyxl.load_workbook(self.excel_path)

  sh = workbook[self.sheet_name]

  data = []

  for c in list(sh.rows)[row]:

  data.append(c.value)

  return data

  if __name__ == '__main__':

  ex = ReadExcel('request.xlsx','Sheet1')

  print(ex.get_data(0))

  print(ex.get_data(1))

  print(ex.get_data(2))

  print(ex.get_data(3))

  print(ex.get_data(4))

  三、requests包

  主要用于发送请求,这里只写了常用的get post请求,需要可以加其他的。

  由于post请求体有多种,此处只区分了两种,其他的可以加上。

  import json

  import requests

  class Request:

  def get_url(self,url,headers=None,paras=None):

  if url==None:

  print("URL地址为空")

  elif paras == None:

  r = requests.get(url,headers=headers,params=paras)

  else:

  r = requests.get(url, headers=headers, params=json.loads(paras))

  return r

  def post_url(self,url,content_type,headers=None,payload=None):

  if url==None:

  print("URL地址为空")

  else:

  if content_type == "application/json":

  payload_json = json.dumps(payload)

  r = requests.post(url,headers=headers,data=payload_json)

  elif content_type =="application/x-www-form-urlencoded":

  r = requests.post(url,headers=headers,data=payload)

  else:

  print("no this content-type")

  return r

  def choose_method(self,method,url,content_type,headers=None,payload=None):

  if method == "get":

  return self.get_url(url,headers,payload)

  elif method == "post":

  return self.post_url(url,content_type,headers,payload)

  else:

  print("no this method request")

  四、testcases包

  使用pytest框架进行自动化测试

  import json

  import pytest

  from autoStruct.apiAuto.common.requests import Request

  from autoStruct.apiAutoTesting.common.readConfig import ReadConfig

  from autoStruct.apiAutoTesting.excel.readExcel import ReadExcel

  class TestApi:

  def setup_class(self):

  file_path = ReadConfig().get_data('excel', 'file_path')

  sheet_name = ReadConfig().get_data('excel', 'sheet_name')

  self.ex = ReadExcel(file_path, sheet_name)

  @pytest.mark.parametrize('num',[1,2,3,4,5])

  def testcase(self,num):

  data = self.ex.get_data(num)

  print(data)

  if data[3]==None:

  r = Request().choose_method(data[1],data[0],data[4],json.loads(data[2]),data[3])

  else:

  r = Request().choose_method(data[1], data[0], data[4], json.loads(data[2]), json.loads(data[3]))

  print(r.text)

  if __name__ == '__main__':

  pytest.main(['-vs','testapi.py'])

  以上是关于使用python实现接口自动化测试的介绍,由多测师亲自撰写。https://www.aichudan.com/

联系电话

17727591462

返回顶部