16.接口自动化学习-编码处理与装饰器

news2025/4/3 19:15:13

1.编码和解码

编码:将自然语言翻译成计算机可以识别的语言
hello–01010
解码:将机器识别的语言翻译成自然语言

2.编码格式

UTF-8
GBK
unicode

3.编码操作

   #编码操作
   str1="hello呀哈哈哈"
   str2=str1.encode('gbk')
   print(str2)
   print(type(str2))
   #解码操作
   str3=str2.decode('gbk')
   # str4 = str2.decode('utf-8')
   print('解码与编码一致结果',str3)

在这里插入图片描述

 resp = requests.request(data['method'], url=f'{HOST}' + data['url'],
                                        params=inData, headers=self.header)
 #修改响应数据编码
  resp.encoding='gbk'
print('响应数据编码》》',resp.encoding)

4.装饰器技术

应用:
在已有的自动化项目中,需要加入一个功能:
获取每个用例执行的时间
方法:
(1)在每个test_xx的方法中,使用time.time进行计时–效率不高,改变原有结构

(2)运用python装饰器

4.1 装包、解包、闭包

装包:在函数定义时 def test(*args,**kwargs)
test(1,2,3,name=tom)–args:装包成元组,**kwargs装包成字典
解包:在函数调用时
test(
[10,20])====>解包成test(10,20)
闭包:在一个函数里定义一个函数,内置函数使用了外函数的一个变量,外函数的返回值是内函数的函数对象

装饰器: 在已有函数的功能上,不修改代码去扩展函数功能

第一版:调用结构会改变

import time
def test_case01():
    time.sleep(1)#模拟测试用例执行时间
    print("--01自动化测试用例执行--")
def test_case02():
    time.sleep(1)#模拟测试用例执行时间
    print("--02自动化测试用例执行--")
def show_time(func):
    def inner():
        startTime=time.time()
        #自动化测试用例执行过程
        func()
        endTime=time.time()
        print("执行时间》》",endTime-startTime)
    return inner
if __name__ == '__main__':
    test_case01=show_time(test_case01) #用一个变量test_case接受外部函数的返回
    test_case01()#就可以使用变量名去调用内置函数

    test_case02=show_time(test_case02)
    test_case02()

第二版:语法糖优化,没有改变调用方式和原test_case中的代码

@show_time #等价于第一版的 test_case01=show_time(test_case01)
等价于test_case01=inner

import time
def show_time(func):
    def inner():
        startTime=time.time()
        #自动化测试用例执行过程
        func()
        endTime=time.time()
        print("执行时间》》",endTime-startTime)
    return inner
@show_time#等价于 test_case01=show_time(test_case01)
def test_case01():
    time.sleep(1)#模拟测试用例执行时间
    print("--01自动化测试用例执行--")
@show_time
def test_case02():
    time.sleep(1)#模拟测试用例执行时间
    print("--02自动化测试用例执行--")

if __name__ == '__main__':
    test_case01()
    test_case02()

在这里插入图片描述

实际运用:计算login接口用例的执行时间

要根据实际接口情况进行改造,本次添加了login的参数和返回
装饰器.py


import time
def show_time(func):
    def inner(*args):# login函数有参数,所以加上*args
        startTime=time.time()
        #自动化测试用例执行过程
        res = func(*args)
        endTime=time.time()
        print("执行时间》》",endTime-startTime)
        return res #login有返回值,所以要return
    return inner

login.py

from common.baseApi import BaseApi
from configs.config import NAME_PSW
import requests
import hashlib
import copy
import json
from utils.装饰器 import show_time

class Login(BaseApi):
    # 登录接口
    @show_time#等价于login=show_time(login)
    def login(self,inData,getToken=False):
        # 浅拷贝inData,以防加密时原数据被修改
        inData= copy.copy(inData)
        print(type(inData))

        inData['password'] = get_md5_data(inData['password'])

        # 封装数据
        payload = inData
        # 请求并接受响应
        respData = self.request_send(payload)
        print(type(respData))
        if getToken:
            return respData['data']['token']
        else:
            return respData

# 加密接口
def get_md5_data(pwd: str):
    md5 = hashlib.md5()
    md5.update(pwd.encode('utf-8'))
    # hexdigest():返回摘要,作为十六进制数据字符串值
    return md5.hexdigest()

if __name__ == '__main__':
   res=Login().login(NAME_PSW)
   print(res)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1654049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA ov5640视频以太网传输

1 实验任务 使用DFZU4EV MPSoC 开发板及双目OV5640摄像头其中一个摄像头实现图像采集,并通过开发板上的以太网接口发送给上位机实时显示。 2 Verilog代码 2.1 顶层模块 timescale 1ns / 1ps //以太网传输视频顶层模块module ov5640_udp_pc (input sys_cl…

在WPS表格(Excel)中,每10行增加一个特定的值

注:如下为WPS表格操作演示 例如1-15的数值是1,16-30就变为2,31-45就变为3,类推! 1、在B1单元格输入一个起始值,B2单元格输入公式IF(MOD(ROW(),15)0,B11,B1) 然后鼠标放到B2单元格右下角小点处&…

开机弹窗找不到OpenCL.dll是怎么回事,哪种修复方法更推荐

当用户在操作电脑过程中遇到系统提示“OpenCL.dll丢失”时,这究竟是怎么一回事呢?OpenCL.dll,作为Open Computing Language(开放计算语言)的重要动态链接库文件,它在图形处理器(GPU)…

springboot整合rabbitmq的不同工作模式详解

前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

县供电公司员工向媒体投稿发文章用亲身经历告诉你并不难

在县供电公司的日子里,我肩负着一项至关重要的使命——信息宣传工作。这不仅仅是一份职责,更是连接公司与外界的桥梁,通过新闻稿件传递我们的声音,展示我们的成果。然而,回忆起刚刚踏入这个领域的时光,那段经历至今让我感慨万千。 初涉投稿,步履维艰 刚接手这项工作时,我的投稿…

信息化飞速发展下,源代码防泄密方案该如何选择?常见四种有效方案分享

信息化时代发展迅速,数据防泄露一词也频繁的出现在我们身边。无论企业或政府单位,无纸化办公场景越来越多,数据泄露的时间也层出不穷。例如:世界最大职业中介网站Monster遭到黑客大规模攻击,黑客窃取在网站注册的数百万…

Dockerfile实践java项目

目的:用java项目测试dockerfil部署(前提是安装好了docker) 部署准备文件如下 1. java项目 java项目demo地址 https://gitee.com/xiaoqu_12/dockerfileDemo.git 或者百度网盘直接下载打包好的jar包 链接:https://pan.baidu.com/s/…

PostgreSQL的学习心得和知识总结(一百四十一)|深入理解PostgreSQL数据库数据库角色的使用及预定义角色的原理

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

【计算机毕业设计】基于SSM++jsp的电子竞技管理平台【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 目的和意义 1.3 论文结构安排 2 相关技术 2.1 SSM框架介绍 2.2 B/S结构介绍 2.3 Mysql数据库介绍 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 运行可行性分析 3.2 系统性能分析 3.2.1 易用性指标 3.2.2 可…

您的浏览器不支持 undefined 代理认证!如有问题请联系您的浏览器支持,请勿反馈此问题给 SwitchyOmega.

一、【问题描述】 PAC 文件是一个 JavaScript 文件,用于定义客户端的代理规则。您可以在 PAC 文件中编写规则,根据不同的目标网址或其他条件,决定是否通过代理服务器进行访问。您可以将 PAC 文件部署到服务器上,并在客户端配置浏…

QT学习PCL库代码

找关键点keypoints 绿色的点就是keypoints outofcore

应用软件安全保证措施方案书

系统安全保证措施方案—word原件 软件全套资料进主页获取或者本文末个人名片直接获取。

【Docker学习】docker run的端口映射-p和-P选项

docker run的端口映射选项分为-p(小写,全称--publish),-P(大写,全称--publish-all),之前认为只有改变容器发布给宿主机的默认端口号才会进行-p的设置,而不改变默认端口号…

STC8增强型单片机开发 【第一个程序 - 点亮第一盏灯】

目录 一、创建项目 1. 创建一个新的项目 ​编辑 2. 配置开发板信息 ​编辑 3. 取消汇编配置 4. 项目结构 二、编码实现 1. 项目准备 2. 代码实现 点灯: 熄灯: 3. 编译烧录运行 配置编译输出 保存和编译代码 ​编辑 烧录 一、创建项目 1. …

静态照片怎么合成gif?详细介绍一个方法

我们在各大平台中都能看到各种样式的gif动图。Gif动图其实就是由一帧一帧的静态图片合成的动态效果的gif,想要制作gif动画可以通过使用在线图片合成(https://www.gif5.net/)工具-GIF5工具网,手机、pc均可操作,只需要上…

STC8增强型单片机开发——C51版本Keil环境搭建

一、目标 了解C51版本Keil开发环境的概念和用途掌握C51版本Keil环境的安装和配置方法熟悉C51版本Keil开发环境的使用 二、准备工作 Windows 操作系统Keil C51 安装包(可以从Keil官网下载)一款8051单片机开发板 三、搭建流程 环境搭建的基本流程&#xf…

第八届大数据与物联网国际会议(BDIOT 2024)即将召开!

第八届大数据与物联网国际会议(BDIOT 2024)将于2024年9月14-16日在澳门圣若瑟大学举行。数聚未来,物联世界!BDIOT 2024旨在搭建为各位与会代表展示自己研究成果、分享经验、建立联系和开展合作的平台,共同探讨大数据与物联网领域的未来发展方…

【CSS】认识CSS选择器及各选择器对应的用法

目录 一、什么是CSS? 二、CSS 选择器 1. 标签选择器 2. 类选择器 3. ID选择器 4. 通配符选择器 5. 复合选择器 一、什么是CSS? CSS(Cascading Style Sheet),层叠样式表。它与 HTML(超文本标记语言)一起使用&am…

2024第16届成都教育连锁加盟展6月1日举办 免费参观

2024第16届成都教育连锁加盟展6月1日举办 免费参观 邀请函 主办单位: 中国西部教体融合博览会组委会 承办单位:重庆港华展览有限公司 博览会主题:责任教育科技兴邦 幼教、普教、高教、校外教育、K12学科辅导、婴幼儿教育、兴趣辅导、学…

C++从入门到精通---模版

文章目录 泛型编程函数模版模版参数的匹配原则类模版类模版的定义格式类模版的实例化 总结 泛型编程 泛型编程是一种编程范式,旨在实现通用性和灵活性。它允许在编写代码时使用参数化类型,而不是具体的类型,从而使代码更加灵活和可重用。 在…