热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   根域文章 -   正文

软件测试培训课程之自动化测试培训——ApiTesting自动化测试框架

zhiliaoadmin
2022-03-03 10:42:02
0

前言:给大家介绍一个处理API接口的轻量级自动化测试框架。

自动化测试培训

0、web端接口请求 1、文件传输 2、app端接口请求

一、DestroyerRobot模型包含内容?

  1. Python+Selenium+Unittest+BeautifulReport WEB自动化框架,

  2. Python+Appnium+Unittest+BeautifulReport App端自动化(安卓机)

  3. Python+Unittest+BeautifulReport+requests api接口自动化

二、DestroyerRobot下流程图?

自动化测试培训

二、使用步骤

1.执行入口 run_**.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time    : 2022/1/18 15:45

# @Email   : 331597811@163.com

# @File    : interface_auto.test.py

import unittest

from BeautifulReport import  BeautifulReport

from DestroyerRobot.automation.util.LoggerUtil import  Log

from DestroyerRobot.automation.util.ConfigUtil import Config

from DestroyerRobot.automation.util.SystemOsUtil import SystemOs

from DestroyerRobot.automation.util.YamlUtil import yamlUtil

from DestroyerRobot.automation.util.DateTimeUtil import TestDateTime

class testFileReport:

    def apis_yaml(self):

        conf = Config("ConfigApi")

        api_path = conf.get_configPath("public_data")

        api_yaml = SystemOs().sys_path(api_path)

        report = yamlUtil(api_yaml).get_yalm()

        report_path = SystemOs().sys_path(report['report'])

        test_path = SystemOs().sys_path(report['test_path'])

        # 0 报告地址 , 1 测试数据集地址

        return report_path,test_path

自动化测试培训

2.操作脚本 test_***.py

import unittest

import time

from ddt import  ddt,data,unpack

from DestroyerRobot.automation.util.ConfigUtil import Config

from DestroyerRobot.automation.util.SystemOsUtil import SystemOs

from DestroyerRobot.automation.util.YamlUtil import yamlUtil

from DestroyerRobot.automation.util.ExcelUtil import xlsxoper

from DestroyerRobot.automation.util.LoggerUtil import Log

from DestroyerRobot.automation.util.HttpClient import HttpClient

from DestroyerRobot.automation.api.action.check_result import CheckResult

from DestroyerRobot.automation.api.action.store_token import stort_token

@ddt

class TestCase(unittest.TestCase):

    """

    全局变量中将excel中首行标题提取:testdata2 , yaml数据返回结果:datainfo

    新脚本中配置新的excel需要改写内容如下 :对应新的配置文件信息

    global:全局变量

     file_path = SystemOs().sys_path(datainfo['file_path2'])

    testdata = xlsxoper(file_path).readerXLS_dict(datainfo['SheetName2'])[0]  # 数据用于ddt使用

    testdata2 = xlsxoper(file_path).readerXLS_dict(datainfo['SheetName2'])[1]  # 首行标题

    def:

    执行脚本对应的excel写入sheet

    xls = xlsxoper(file_path).writeXLS_dict(datas['caseNo'],column,str(responseData),datainfo['SheetName2'])

    """

    global  log , file_path,datainfo,testdata2

    log = Log().logger()

    conf = Config("ConfigApi")

    keys = conf.parsing_config("public_data")

    public_data = SystemOs().sys_path(keys) #通过主配置文件config获取主yaml配置文件路径-

    datainfo = yamlUtil(public_data).get_yalm()

    file_path = SystemOs().sys_path(datainfo['file_path2'])

    testdata = xlsxoper(file_path).readerXLS_dict(datainfo['SheetName2'])[0]  # 数据用于ddt使用

    testdata2 = xlsxoper(file_path).readerXLS_dict(datainfo['SheetName2'])[1]  # 首行标题

    #testdata,testdata2 = xlsxoper(file_path).readerXLS_dict(datainfo['SheetName2']) #等于 testdata,testdata2

    #*testdata 只获取数据

    @data(*testdata)

    def test_01_demo(self, datas):

        """

        接口测试

        :param datas: 从yaml文件中获取excel路径,读取数据集,通过ddt形式

        """

        isSkip = datas['isSkip'] #获取excle中isSkip

        if isSkip == 'y':

            log.info("当isSkip==y跳过此条用例")

        else:

            #print("datas:",datas)

            webapp = datas['setApp']

            setApp=datainfo[webapp]      #获取excel中设备类型setApp是网页还是手机

            log.info('setApp: %s ',setApp)

            setpath = SystemOs().sys_path(setApp) #获取yaml子配置文件路径信息如:C:/Users/vivid/PycharmProjects/untitled/DestroyerRobot/yaml_file/header_cms.yaml

            header = yamlUtil(setpath).get_yalm() #获取header信息

            url = datainfo[datas['domain']]+datas['requestUrl']

            #"请求方式= %s",datas['method'],"请求参数= %s",datas['param'] "请求格式= %s",datas['paramType'],"请求头部信息= %s",header

            log.info("请求地址= %s ",url)

            # log.info("请求方式= %s",datas['method'])

            # log.info("请求格式= %s",datas['paramType'])

            # log.info("请求头部信息= %s",header)

            responseData = HttpClient().request(datas['method'],url,datas['paramType'],datas['param'],header) #实际结果

            log.info("实际响应结果:%s",responseData)

            responseResult = CheckResult.check(responseData, datas["exceptResponse"])

            log.info("判断预期结果与实际结果是否一致:0 为 False 1 为 True = %s ",responseResult)

            # 判断是否将token写入yaml对应的文件中

            stort_token(responseData,webapp,setpath,responseResult,datas['istoken'],datainfo['token'],datainfo['Authorization']).token()

            #查找CASE_trueResponse中value值对应excel的列位置

            column = testdata2.index(datainfo['CASE_trueResponse'])

            # 写入excel中

            log.info("将实际响应结果集数据写入excel中对应列" )

            #写入excel数据必须是字符串,不能是dict

            xls = xlsxoper(file_path).writeXLS_dict(datas['caseNo'],column,str(responseData),datainfo['SheetName2'])

            time.sleep(1)

if __name__ == '__main__':

    unittest.main()

2.git 地址

github_url : https://github.com/jim-xiemeng/DestroyerRobot.git 修改配置文件如下(示例): configs/config.cfg

[ConfigApi]public_data = automation/api/config/public_data.yaml

修改项目名称文件如下(示例): util/SystemOs.py

class SystemOs:    def __init__(self,project_paths='DestroyerRobot'): #-->可以修改为公司项目对应名称        self.project_paths = project_paths

总结

如果有小伙伴做的是测试,有兴趣的可以使用这个框架。关注成都软件测试培训机构,带你了解更多相关知识。


大家都在看

软件测试培训有必要吗?过来人带你了解软件测试培训...

2022-03-03 浏览次数:0

知了堂为四川轻化工大学开展网络安全专题项目集训

2022-03-03 浏览次数:0

java开发就业培训学校jdk

2022-03-03 浏览次数:0

前端培训班出来能找到工作吗?前端培训找不到工作?

2022-03-03 浏览次数:0

网络工程专业就业方向与就业前景怎么样?细说网络工...

2022-03-03 浏览次数:0

前端怎么选框架?前端开发哪个框架好用?

2022-03-03 浏览次数:0
最新资讯
软件测试培训课程之自动化测试培... 软件测试培训课程之自动化测试培训——ApiTesting自动化测试框架!前言:给大家介绍一个处理AP...