首页 > 编程语言 >python自动化测试框架,封装方法方式

python自动化测试框架,封装方法方式

时间:2024-06-05 14:26:52浏览次数:18  
标签:封装 service python list self request json 自动化 response

第一种:静态方法封装,接口调用入参定义一个(默认json),直接执行接口请求

接口封装代码如下:

class OrderTransactionService:

    @staticmethod
    def getComboProductList(body):
        url = http_host + '/service?serialize=7'
        headers = {'Content-Type': 'application/json'}
        request_list = []
        request_list.append('com.ymm.insurance.request.ProductListRequestDirect')
        request_list.append(body)
        parm_json = CommonUtils.be_post_json(methodName='getComboProductList',
                                             url='http://service.ymm.com/insure-service-apply/orderTransactionService_1.0.0',
                                             request_list=request_list)
        response = httpUtil.Post(url, headers, parm_json)
        logger.info("=======getComboProductList的POST方式的入参是=====\n" + str(request_list))
        logger.info("=======getComboProductList的POST方式的返回值是=====\n" + response)
        response = json.loads(response)
        return response

测试用例方法调用如下:

# encoding:utf-8
import pytest
from settings import env
from base.insure.insure_service import OrderTransactionService
from settings import mysql
orderTransactionService = OrderTransactionService()
database = mysql.Database("fis")

@pytest.mark.doubleRead
class Test_getComboProductList:
    # 从数据库随机取一条数据
    json_dev =  {
        "cargoId": 10171239743346,
        "driverYmmUid": 965006065498560609,
        "driverHcbUid": 900345103,
        "shipperYmmUid": 965006065498913346,
        "shipperHcbUid": 1100297317,
        "appType": 1,
        "source": 1,
        "cargoSource": 1,
        "client": 1,
        "version": "10990000",
        "pluginVersion": "10.99.1.1",
        "payOrderPluginVersion": "10.99.1.284",
        "securityTran": 7,
        "startCode": 310101,
        "endCode": 270213,
        "firstCategoryCode": 10,
        "firstCategoryName": "食品饮料",
        "secondCategoryCode": 91,
        "secondCategoryName": "酱油"
    }
    json_qa = {
    "cargoId": 123659599419839,
    "driverYmmUid": 967933837394139781,
    "driverHcbUid": 215996505,
    "shipperYmmUid": 967933837002049839,
    "shipperHcbUid": 215801452,
    "appType": 1,
    "source": 1,
    "cargoSource": 1,
    "client": 1,
    "version": "8600700",
    "pluginVersion": "7.25.1.1",
    "payOrderPluginVersion": "8.58.141.380",
    "securityTran": 8,
    "startCode": 330382,
    "endCode": 320114,
    "firstCategoryCode": 3,
    "firstCategoryName": "服饰 纺织 皮革",
    "secondCategoryCode": 47,
    "secondCategoryName": "服装",
    "userFlag": None,
    "platFormScene": None
  }
    if env.env == 'qa':
        json =json_qa
    else:
        json =json_dev
    def test_01(self):
        result = orderTransactionService.getComboProductList(self.json)

第二种:不是静态方法,通过不定长字典参数(**kwargs),封装接口

class freightCompensationClaimService:
    def autoReport(self, **kwargs):
        url = http_host + '/service?serialize=7'
        headers = {'Content-Type': 'application/json'}
        request_list = []
        request_list.append('com.ymm.insurance.dto.claim.crm.request.AutoReportClaimRequestDto')
        request_list.append(kwargs)
        parm_json = CommonUtils.be_post_json(methodName='autoReport',
                                             url='http://service.ymm.com/insure-service-apply/freightCompensationClaimService_1.0.0',
                                             request_list=request_list)
        response = httpUtil.Post(url, headers, parm_json)
        logger.info("=======autoReport的POST方式的入参是=====\n" + str(kwargs))
        print("=======autoReport的POST方式的返回值是=====\n" + response)
        response_json = json.loads(response)
        return response_json

测试用例方法调用如下:

from base.insure.insure_service import freightCompensationClaimService
from settings.mysql import Database

freightCompensationClaimService=freightCompensationClaimService()
dataBase = Database("fis")
dataBase_calim = Database("fis_claim")
poliNo = 0

# 太平洋运费损失险理赔
class Test_autoReport:
    def setup_class(self):
        self.poliNo = 'AGUZGDS59724EGGF73E4'
        self.claimAmount = 6000.01
        self.conferenceFreightRate = 8000
        self.receivedFreightRate = 1000
        self.truckLength = '6.0'
        self.driverLicenses =  ["https://dev-image56-conf-oss.ymm56.com/ymmfile/insure-service/1e15310d-f7b7-444d-a5ef-a11708bbe48a?Expires=1654166938&OSSAccessKeyId=LTAIq0WRi8jPwg5y&Signature=7PV0SGlFsqSuMvTPHQlYt2jw3eU%3D"]
        self.drivingLicenses = ["https://dev-image56-conf-oss.ymm56.com/ymmfile/insure-service/1e15310d-f7b7-444d-a5ef-a11708bbe48a?Expires=1654166938&OSSAccessKeyId=LTAIq0WRi8jPwg5y&Signature=7PV0SGlFsqSuMvTPHQlYt2jw3eU%3D"]
        self.invoices = ["https://dev-image56-conf-oss.ymm56.com/ymmfile/insure-service/1e15310d-f7b7-444d-a5ef-a11708bbe48a?Expires=1654166938&OSSAccessKeyId=LTAIq0WRi8jPwg5y&Signature=7PV0SGlFsqSuMvTPHQlYt2jw3eU%3D"]



    def test_01(self):
        response = freightCompensationClaimService.autoReport(policyNo= self.poliNo,claimAmount=self.claimAmount,conferenceFreightRate=self.conferenceFreightRate ,receivedFreightRate=self.receivedFreightRate ,truckLength=self.truckLength ,
            driverLicenses=self.driverLicenses,drivingLicenses=self.drivingLicenses,invoices=self.invoices )
        print(response["response"])
        assert response["response"]["success"] == True
        assert response["response"]["data"] != None

 

标签:封装,service,python,list,self,request,json,自动化,response
From: https://www.cnblogs.com/happyyangyanghappy/p/18232919

相关文章

  • 自动化测试架构
    1、接口自动化测试框架设计图2、接口自动化执行设计图3、API自动化平台框架设计图4、UI自动化测试框架设计图5、接口+UI自动化测试框架设计图6、Appium移动端自动化测试框架图7、JMeter接口自动化测试框架图8、JMeter接口自动化测试框架图29、自动化测试框架设计......
  • Python结合文件名称将多个文件复制到不同路径下
      本文介绍基于Python语言,针对一个文件夹下的大量栅格遥感影像文件,基于其各自的文件名,分别创建指定名称的新文件夹,并将对应的栅格遥感影像文件复制到不同的新文件夹下的方法。  首先,我们来看一下本文需要实现的需求。现有一个文件夹,其中有大量.tif格式的栅格遥感影像文件,以及......
  • python 标准库 dataclasses 使用指南
    简单使用dataclasses可以用来快速的定义数据类,并能够简单明了的指明该类所具有的属性和类型,比如,要定义一个名为Person的类,常规的写法如下:classPerson:def__int__(self,id:int,first_name:str,last_name:str,eye_color:str):self.id=idse......
  • Python从0到100(二十九):requests模块处理cookie
    1爬虫中使用cookie为了能够通过爬虫获取到登录后的页面,或者是解决通过cookie的反扒,需要使用request来处理cookie相关的请求1.1爬虫中使用cookie的利弊带上cookie的好处能够访问登录后的页面能够实现部分反反爬带上cookie的坏处一套cookie往往对应的是一个用户......
  • Python数据类型转换(新)
    目录Python数据类型的转换隐式类型转换显式类型转换Python数据类型的转换数据类型分为1.隐式类型转换2.显式类型转换隐式类型转换在隐式类型转换中,Python会自动将一种数据类型转换为另一种数据类型,不需要认为去干预比如在进行算术运算的时候,较低数据类型(整数)就会......
  • Python2 input函数漏洞利用
    在Python2中,input函数相当于eval(raw_input(prompt))如果输入的数据是一个恶意的表达式,存在任意代码执行的风险实例演示字符串拼接命令执行__import__('os').system('cat/etc/passwd')靶场利用在vulnhubbottleneck靶机中,遇到input漏洞利用的情况#核心......
  • Python3基本语法(新)
    目录基本语法输出print()格式化输出标识符import关键字保留字(关键字)注释多行注释1、单引号(''')2、双引号(""")缩进空行同一行显示多条语句等待用户输入inputimport与from...import基本语法输出print()print()是一个让计算机在屏幕上进行输出的'指令'.它分为四个部分1.prin......
  • Python数据类型(新)
    目录数据类型类型查看同时多个变量赋值标准数据类型1.数字(Number)2.字符串3.bool(布尔类型)4.元组元组的运算+运算+=运算*运算元组的删除5.列表(List)查找列表修改列表列表的切片列表是可以修改的列表的追加列表的插入列表的连接列表的删除列表的清空列表的复制6.字典查找字典......
  • 基于Python混沌系统和DNA编码的图像加密算法
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景随着互联网和多媒体技术的快速发展,数字图像作为信息传递的重要媒介,在各个领域得到广泛应用。然而,图像信息的传输......
  • 基于Python+OpenCV使用DNA编码和混沌图创建图像加密算法
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在数字信息时代,图像作为信息的重要载体,其安全性尤为重要。传统的图像加密方法往往存在安全性不足、加密效......