当前位置: 首页 > news >正文

main

# -*- coding:utf-8 -*-
#__author__ = '大婶N72'
'''
主脚本,用于串联各个py文件
'''
import logging,os,re
from common import request, opmysql, analyse, compare
from public import config
base_request= request.RequestInterface()#实例化http请求
base_operationdb_interface= opmysql.OperationDbInterface()#实例化接口测试数据库操作类
try:
    print("开始接口自动化程序,请选择操作类型(0|执行用例;1|导出测试结果)")
    value_input = input('请输入操作类型:')#该出输入0时,调试窗口是str,而可视化窗口是int
    while not re.search(r'^[0-1]$',value_input):#正则判断不在0-1之间的数字
        print ("请输入正确的操作类型(0|执行用例;1|导出测试结果)")
        value_input = str(input('请输入操作类型:'))
    else:
        if value_input=='0':
            print("您输入的是:0|执行测试用例")
            module_execute=base_operationdb_interface.select_all("SELECT value_config from config_total where key_config='exe_setup' and status=1")#获取待执行接口数据
            if len(module_execute['data'])!=0 and module_execute['code']=='0000':
                for module_execute_one in module_execute['data']:
                    temp_module_execute=eval(module_execute_one['value_config'])#每个接口的字典数据
                    for temp_name_interface,condition in temp_module_execute.items():
                        print('############开始执行接口:%s############\n' %(temp_name_interface))
                        temp_level_check=condition['level_check']#检查级别
                        temp_level_exe=tuple(condition['level_exe'])#执行级别
                        data_case_interface=base_operationdb_interface.select_all("select * from case_interface where case_status=1 and name_interface='%s' and exe_level in %s" %(temp_name_interface,temp_level_exe))#获取接口测试数据
                        if data_case_interface['code']=='0000' and len(data_case_interface['data'])!=0:
                            for temp_case_interface in data_case_interface['data']:
                                id_case=str(temp_case_interface['id'])#用例编号
                                url_interface=temp_case_interface['url_interface']#接口地址
                                headerdata=eval(temp_case_interface['header_interface'])#请求头文件
                                param_interface=temp_case_interface['params_interface']#接口请求参数
                                type_interface=temp_case_interface['exe_mode']#执行环境
                                result_http_response=base_request.http_request(interface_url=url_interface,headerdata=headerdata,interface_param=param_interface,request_type=type_interface)#发送http请求
                                print("接口地址:%s\n请求参数:%s\n返回包数据:%s" %(url_interface,param_interface,result_http_response))
                                base_operationdb_interface.op_sql("UPDATE case_interface set result_interface='%s' where id=%s" %(result_http_response['data'],id_case))#接口返回包写入用例表
                                if result_http_response['code']=='0000' and len(result_http_response['data'])!=0:
                                    for child_level_check in temp_level_check:#循环检查级别
                                        base_compare= compare.CompareParam(temp_case_interface)#实例化参数比较类
                                        if child_level_check in (0,):#执行关键参数值检查
                                            result_compare_code=base_compare.compare_code(result_http_response['data'])
                                            print('用例编号:%s|检查级别:关键参数值|接口名称:%s|提示信息:%s\n' %(id_case,temp_name_interface,result_compare_code['message']))
                                        elif child_level_check in [1]:#执行参数完整性检查
                                            result_compare_params_complete=base_compare.compare_params_complete(result_http_response['data'])
                                            print('用例编号:%s|检查级别:参数完整性|接口名称:%s|提示信息:%s\n' %(id_case,temp_name_interface,result_compare_params_complete['message']))
                                        elif child_level_check in [2]:#执行功能测试,待开发
                                            pass
                                        elif child_level_check in (3,):#执行结构完整性检查,待开发
                                            pass
                                        else:
                                            print('用例编号:%s|接口名称:%s|检查级别错误:%s\n' %(id_case,temp_name_interface,child_level_check))
                                elif len(result_http_response['data'])==0:
                                    print('用例编号:%s|接口名称:%s|错误信息:接口返回数据为空\n' %(id_case,temp_name_interface))
                                else:
                                    print('用例编号:%s|接口名称:%s|错误信息:%s\n' %(id_case,temp_name_interface,result_http_response['message']))
                        elif len(data_case_interface['data'])==0:
                            print('接口名称:%s|错误信息:获取用例数据为空,请检查用例\n' %(temp_name_interface))
                        else:
                            print('接口名称:%s|错误信息:获取用例数据失败|错误信息:%s\n' %(temp_name_interface,data_case_interface['message']))
                        print('############结束执行接口:%s############\n' %(temp_name_interface))
            else:
                print('错误信息:待执行接口获取失败|错误信息:%s' %module_execute['message'])
        elif value_input=='1':
            print('您输入的是:1|导出测试结果,请注意查看目录:%s' %(config.src_path+'\\report'))
            names_export=base_operationdb_interface.select_one("select value_config from config_total where status=1 and key_config='name_export'")#获取导出的接口数据元祖
            if names_export['code']=='0000' and len(names_export['data']['value_config'])!=0:#判断查询结果
                temp_export=eval(names_export['data']['value_config'])#获取查询数据,并将其转换成字典
                test_analyse_data= analyse.AnalyseData()#实例化数据分析类
                result_export=test_analyse_data.export2excel(temp_export)#导出结果
                print (result_export['message'])
                print ("导出失败接口列表:%s\n" %result_export['data'])
            else:
                print("请检查配置表数据正确性,当前值为:%s\n" %names_export['data'])
except Exception as error:#记录日志到log.txt文件
    print("系统出现异常:%s" %error)
    logging.basicConfig(filename =  config.src_path + '\log\syserror.log', level = logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
    logger = logging.getLogger(__name__)
    logger.exception(error)
input('Press Enter to exit...')

相关文章:

  • jmeter_(1)安装及配置
  • jmeter_(3)回放及断言
  • jmeter_(2)录制脚本
  • jmeter_汇总报告_数据解读
  • jmeter_接口间参数关联
  • python与selenium_环境搭建(1)
  • python与selenium_环境搭建(2)
  • python与selenium_基础篇_前端
  • python + selenium_元素定位
  • selenium_常用方法
  • selenium_其他方法
  • python与selenium_项目篇_项目实战、代码优化、项目重构
  • selenium+pytest自动化测试框架FAQ
  • python与selenium_项目篇_数据驱动测试
  • python与selenium_项目篇_page object设计模式(项目框架)
  • 《Java编程思想》读书笔记-对象导论
  • C++11: atomic 头文件
  • css选择器
  • Docker: 容器互访的三种方式
  • Effective Java 笔记(一)
  • HTTP 简介
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript的使用你知道几种?(上)
  • java概述
  • Laravel 中的一个后期静态绑定
  • Python实现BT种子转化为磁力链接【实战】
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊聊flink的BlobWriter
  • 前端面试题总结
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 手写双向链表LinkedList的几个常用功能
  • 微信公众号开发小记——5.python微信红包
  • 小程序button引导用户授权
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • hi-nginx-1.3.4编译安装
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #mysql 8.0 踩坑日记
  • $.ajax()
  • $jQuery 重写Alert样式方法
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (十六)串口UART
  • (算法二)滑动窗口
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转载)(官方)UE4--图像编程----着色器开发
  • **PHP二维数组遍历时同时赋值
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)