python接口自动化第一章

python接口自动化第一章,第1张

AutomatedTesting

该自动化项目使用的是unittest框架,pytest兼容unittest,用哪个框架运行看各自喜好,后面会讲;
多说一句,pytest还是unittest还是testng哪怕是jmeter能完成需要做的事就ok,都是工具而已,不必拘于形式。

第一节 common目录(文件路径设置,封装请求方式method,封装读取excel)


文章目录
  • AutomatedTesting
  • 前言
  • 一、文件路径设置
  • 二、封装请求方式method
  • 三、封装读取excel
  • 总结


前言

接口自动化 项目结构图

目录结构大部分都是常用目录
common - 公共方法
config - 配置文件信息
report - 日志/报告存放
runtest - 运行入口
testfile - 用例文件
tools - 工具箱
DDT - 数据驱动参数化
jenkins - 定时运行
实现:读取表格用例文件,jenkins定时运行,实现接口自动化,并做到数据与代码分离。


一、文件路径设置

代码如下:

"""
@File    :  setting_path.py
@Time    :  2022/4/21
@Author  :  Mr_桐
"""

# -*- coding:utf-8 -*-
import sys
import os
import time
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

# 时间
current_time = time.strftime("%Y-%m-%d - %H:%M", time.localtime(time.time()))
# 项目根路径
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 配置文件中全局变量路径
global_ini = os.path.join(base_dir, 'config', 'global.ini')
# 配置文件中邮件配置路径
email_ini = os.path.join(base_dir, 'config', 'email.ini')
# 测试文件路径
excel_dir = os.path.join(base_dir, 'testfile')
# 测试数据路径
testdata_dir = os.path.join(base_dir, 'testfile', 'varible_file')
# 日志路径
log_dir = os.path.join(base_dir, 'report', 'log.text')
# 测试报告路径
result_dir = os.path.join(base_dir, 'report', '接口自动化测试报告.html')
# 测试demo
excel_dir_demo = os.path.join(base_dir, 'testfile','index_case.xlsx')



二、封装请求方式method

代码如下:

"""
@File    :  method.py
@Time    :  2022/4/21
@Author  :  Mr_桐
"""

# -*- coding:utf-8 -*-
import sys
import os
import requests
import json
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)


class RunMain():

    # 定义post方法
    def send_post(self, headers, url, data):
        result = requests.post(url=url, headers=headers, data=data).json()
        res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
        return res

    # 定义put方法
    def send_put(self, headers, url, data):
        result = requests.put(url=url, headers=headers, data=data).json()
        res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
        return res

    # 定于get方法
    def send_get(self, headers, url, data):
        result = requests.get(url=url, headers=headers, params=data).json()
        res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
        return res

    # 根据method值执行请求返回结果
    def run_main(self, method, headers, url=None, data=None):
        result = None
        if method == 'POST':
            result = self.send_post(headers, url, data)
        elif method == 'PUT':
            result = self.send_put(headers, url, data)
        elif method == 'GET':
            result = self.send_get(headers, url, data)
        else:
            print("method方法不存在")
        return result



三、封装读取excel

代码如下:

"""
@File    :  read_excel.py
@Time    :  2022/4/21
@Author  :  Mr_桐
"""

# -*- coding:utf-8 -*-
import xlrd
import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from common import setting_path


class ReadExcel():
    def readExcel(fileName, SheetName):
        data = xlrd.open_workbook(fileName)
        table = data.sheet_by_name(SheetName)

        # 获取总行数、总列数
        nrows = table.nrows
        if nrows > 1:
            # 获取第一列的内容,列表格式
            keys = table.row_values(0)
            listApiData = []
            # 获取每一行的内容,列表格式
            for col in range(1, nrows):
                values = table.row_values(col)
                api_dict = dict(zip(keys, values))
                listApiData.append(api_dict)
            return listApiData
        else:
            return None



总结

欢迎大家多交流,vx:-20206688

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/728929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存