一、

新建atp目录,该目录下包含bin(存放启动程序等)、config(存放配置程序)、lib(存放过程程序)、logs(存放生成的日志)、cases(存放用例的excel文件)五个目录,并新建一个txt文件teadme.txt,用于书写说明文档。

二、

1、

首先在lib目录下创建tools.py文件,打开excel表格,若打开失败,则生成log;若打开成功,则读取excel中的用例

tools.py如下

import xlrd
from xlutils.copy import copy
from config.setting import my_log,MAIL_INFO,TO,CC
import yagmail
from lib import my_request
import time
def readExcel(file_path):
    try:
        book  = xlrd.open_workbook(file_path)
    except Exception as e:
        my_log.error('打开用例出错,文件名是%s'%file_path)
        return []
    else:
        all_case = [] #存放所有的用例
        sheet = book.sheet_by_index(0)
        for i in range(1,sheet.nrows):
            row_data = sheet.row_values(i)
            all_case.append(row_data[4:8])
        return all_case

在config目录下创建setting.py,编辑配置信息,如日志文件名、存放用例的目录等

setting.py如下

import nnlog,os
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
LOG_FILE_NAME = 'atp.log'#日志文件名
ABS_FILE_PATH = os.path.join(BASE_PATH,'logs',LOG_FILE_NAME)
my_log = nnlog.Logger(ABS_FILE_PATH) #日志信息

CASE_PATH = os.path.join(BASE_PATH,'cases') #存放用例的目录
os.path.dirname
os.path.abspath
os.path.join
nnlog.Logger

2、在lib目录下创建my_requests.py文件,用于访问接口、并将返回的结果转化为text格式。(json->text、data->text)
import requests
from config.setting import my_log
def post(url,data,header=None,cookies=None,is_json=False):
    try:
        if is_json:
            res = requests.post(url, json=data, headers=header, cookies=cookies).text
        else:
            res = requests.post(url,data=data,headers=header,cookies=cookies).text
    except Exception as e:
        my_log.error('接口请求出错,%s'%e)
        res = str(e)
    return res

def get(url,data,header=None,cookies=None):
    try:
        res = requests.get(url,params=data,headers=header, cookies=cookies).text
    except Exception as e:
        my_log.error('接口请求出错,%s'%e)
        res = str(e)
    return res

3、运行用例,并将返回结果和用例结果写入excel文件中。

在lib目录下的tools.py文件中添加以下程序:

def check_res(res:str,check:str):
    new_res = res.replace('": "','=').replace('": ','=')
    for c in check.split(','):
        if c not in new_res:
            return '失败'
    return '通过'

def write_res(file_name,res_list):
    book = xlrd.open_workbook(file_name)
    new_book = copy(book)
    sheet = new_book.get_sheet(0)
    for row,data in enumerate(res_list,1):
        res,status = data
        sheet.write(row,8,res)  #写入返回结果和运行状态
        sheet.write(row,9,status)
    new_book.save(file_name)
def str_to_dict(s:str,seq='&'):
    #username=niuhanyang&password=123456
    d = {}
    if s.strip():
        for tmp in s.split(seq):
            k,v = tmp.split('=')#username,niuhanyang
            d[k]=v
    return d
def run_case(all_case):
    all_res = []
    for case in all_case:
        url,method,data,check = case
        my_log.info('正在运行%s'%url)
        data = str_to_dict(data) #把请求参数转成字典
        if method.upper()=='POST':
            res = my_request.post(url,data)
        else:
            res = my_request.get(url,data)
        status = check_res(res,check) #校验结果
        all_res.append([res,status])
    return all_res

4、在bin目录下创建start.py文件,启动程序

from lib import my_request
from lib import tools
def main():
    all_case = tools.readExcel(r'F:\besttest\python自动化\day-nn\day10\测试用例.xlsx')
    all_res = tools.run_case(all_case)
    tools.write_res(r'F:\besttest\python自动化\day-nn\day10\测试用例.xlsx')

main()

atp的更多相关文章

  1. Erp中的ATP和CTP是什么?两者有什么区别?

    可用量承诺(Available to Promise,ATP),是一种库存匹配模型,意在最大限度地利用库存产品对客户订单需求做出及时和准确的反应,缩短交货提前期.降低库存水准: 可用生产能力承诺(Ca ...

  2. poj 1818 ATP

    ATP 题意:足球锦标赛使用二分的策略,每次淘汰剩下人的一半,并且数据表明:排名相差k(include)之内的运动员,胜负难料,否则排名前的必定战胜排名后的:问给定n(n = 2x, x∈N, n & ...

  3. 自学Linux Shell15.2-作业控制命令(jobs/bg/nice/renice/at/atp/atrm/crontab)

    点击返回 自学Linux命令行与Shell脚本之路 15.1-作业控制命令(jobs/bg/nice/renice/at/atp/atrm/crontab) 1  控制作业 1.1查看作业 (jobs ...

  4. 接口自动化(atp,utp)

    atp:数据驱动 utp:代码驱动 pip install -r file.txt #安装文件里面有的模块 pip freeze > file.txt #导出你已经安装好的第三方模块

  5. Available to Promise (ATP) in SAP-SD

    One short note before we start off the subject: Availability refers to the projections of future mat ...

  6. ATP学姐的模拟赛

    ATPの水题大赛 声明:不是我觉得这题水,这就是本场模拟赛的名称. T1:求所有的$n$位数中有几个数满足:每一位要么是$A$要么是$B$,并且这个$n$位数的每一位加起来是$A$或$B$的倍数. $ ...

  7. SAP ATP邏輯可用性檢查

    [转http://tqmeng.blog.163.com/blog/static/169263916201162002414612/]SAP ATP邏輯可用性檢查1.可用性檢查群組OVZ2主要用於檢查 ...

  8. 在SAP C4C里触发SAP ERP的ATP check和Credit check

    在C4C里创建一个新的Sales Quote: 添加三个行项目: 执行action "Request External Pricing"会从ERP更新pricing信息,触发ATP ...

  9. ATP自造8Gb内存颗粒供DDR3使用

    随着整个行业已经全面转向DDR4内存,不少厂商都陆续停产了DDR3,并准备好了迎接DDR5,但对于很多特殊用户,尤其是网络和嵌入式领域,仍然对DDR3有着强劲且持续的需求. 工业内存存储厂商ATP E ...

随机推荐

  1. mysql索引原理与慢查询优化1

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  2. IDA Pro 权威指南学习笔记(二) - IDA 数据库文件

    生成数据库文件 把要分析的文件用 IDA 打开后,会生成 3 个数据库文件 扩展名分别为 .id0,id1,nam .id0 文件是一个二叉树形式的数据库 .id1 文件包含描述每个程序字节的标记 . ...

  3. 决策树 ID3 C4.5 CART(未完)

    1.决策树 :监督学习 决策树是一种依托决策而建立起来的一种树. 在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某 ...

  4. Spring Cloud Eureka 5 (服务发现与消费-简单的robbin使用)

    通过上述介绍,我们已经有了服务注册中心和服务提供者 下面我们来尝试构建一个服务的消费者 它要完成两个功能,发现服务和消费服务,其中发现服务由eureka客户端完成,消费服务由ribbon完成. rib ...

  5. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归

    Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification6.2 假设表示 Hypothesis Representation6.3 决策边界 ...

  6. ubuntu搭建定时任务管理器

    一.安装golang 1.apt-get安装golang $ sudo apt-get update $ sudo apt-get install -y golang 2.创建Go语言的工作文件夹,并 ...

  7. Oracle & SQL Server 数据传输

    在开发中用到的Oracle与SQL Server间数据传输的不同方法的整理,比较.包括原理的简介,配置和实现方法,优缺点的比较,使用平台和DB,适合的应用范围和效能的比较. 整理的方法有如下六种: 1 ...

  8. 58. Length of Last Word最后一个单词的长度

    [抄题]: [暴力解法]: 时间分析: 空间分析: [优化后]: 时间分析: 空间分析: [奇葩输出条件]: [奇葩corner case]: "b a " 最后一位是空格,可能误 ...

  9. linux Shell中常用的条件判断

    linux Shell中常用的条件判断 -b file            若文件存在且是一个块特殊文件,则为真 -c file            若文件存在且是一个字符特殊文件,则为真 -d ...

  10. Windows Cmder

    一.简介 作为一个程序员,即使是在windows工作环境,cmd也是我们必不可少的使用工具.cmder 是为 Windows 提供的一个便携式控制台仿真器,用来替代windows的cmd,使用非常简单 ...