黄龙云 加强网站建设网络营销方案如何写

news/2025/9/25 15:41:53/文章来源:
黄龙云 加强网站建设,网络营销方案如何写,网站背景图,wordpress主题国内模板元类在测试框架中的运用 书接上回 我们知道了元类的基本用法#xff0c;也写了一个小demo#xff0c;接下来我们就尝试运用进我们测试框架。 #一款无需编码且易用于二次开发的接口测试框架。 #我写的我写的我写的我写的 pip install mwj-apitest #这里面就用到了元类…元类在测试框架中的运用 书接上回 我们知道了元类的基本用法也写了一个小demo接下来我们就尝试运用进我们测试框架。 #一款无需编码且易用于二次开发的接口测试框架。 #我写的我写的我写的我写的 pip install mwj-apitest #这里面就用到了元类教程还在写有兴趣的可以玩一玩还有一些bug还有很多地方没完善前几天让一位大佬帮忙测试了windows和mac都可以运行哦。 #目前最新版本是1.2.3知识回顾 type(name, bases, dcit) - name 表示要创建的类的名称。字符串类型 - bases : 继承类的基类元组或包含基类的元类。元组类型 - dict : 类属性和方法。字典类型动态创建用例 # 使用type去创建用例类 from unittest import TestCase# 通过type动态去生成测试类 MyTest type(MyTest, (TestCase,), {cases: [11, 22, 33, 44], test_1: lambda x: x, test_2: lambda x: x})if __name__ __main__:import unittestimport unittestreportsuite unittest.defaultTestLoader.loadTestsFromTestCase(MyTest)unittestreport.TestRunner(suite).run()运行结果 test_1 (__main__.MyTest)执行——【通过】 test_2 (__main__.MyTest)执行——【通过】 所有用例执行完毕正在生成测试报告中...... 测试报告已经生成报告路径为:./reports\report.html上面通过元类动态创建测试类及测试方法部分的代码等同于如下代码 from unittest import TestCase class MyTest(TestCase):cases [11, 22, 33, 44]test_1 lambda x: xtest_2 lambda x: x等价于 from unittest import TestCaseclass MyTest(TestCase):cases [11, 22, 33, 44]classmethoddef test_1(cls, x):return xclassmethoddef test_2(cls, x):return x自定义解析测试用例的元类 准备一手测试数据在同级目录下创建test_data.json文件 [{title: 测试用例1,data: 参数1},{title: 测试用例2,data: 参数2},{title: 测试用例3,data: 参数3} ]from functools import wraps import unittestdef update_test_func(func, value):wraps(func)def wrapper(self, **kwargs):return func(self, value)return wrapperclass MyMateClass(type):def __new__(cls, name, bases, attrs, *args, **kwargs):# 通过元类创建一个类test_cls super().__new__(cls, name, bases, attrs)# 遍历属性Casesfor index, value in enumerate(attrs[Cases]):# func test_cls.test_performfunc getattr(test_cls, perform)test_func update_test_func(func, value)# 动态给test_cls这个类 添加方法setattr(test_cls, test_{}.format(index), test_func)return test_clsclass BaseApiCase:用例执行的基本类def perform(self, case):用例执行的方法print(测试数据, case)# 1、用例数据的处理# 2、接口请求# 3、响应数据提取# 4、断言if __name__ __main__:import unittestreportimport json# 通过自定义的元类创建类with open(test_data.json, r, encodingutf-8) as f:cases {Cases: json.load(f)}Xiaozai MyMateClass(Xiaozai, (unittest.TestCase, BaseApiCase), cases)# # 加载测试类的用例到测试套件suite unittest.defaultTestLoader.loadTestsFromTestCase(Xiaozai)# 运行用例unittestreport.TestRunner(suite, templates2).run() 执行结果如下 测试数据 {title: 测试用例1, data: 参数1} test_0 (__main__.Xiaozai)执行——【通过】 测试数据 {title: 测试用例2, data: 参数2} test_1 (__main__.Xiaozai)执行——【通过】 测试数据 {title: 测试用例3, data: 参数3} test_2 (__main__.Xiaozai)执行——【通过】 所有用例执行完毕正在生成测试报告中...... 测试报告已经生成报告路径为:./reports\report.html代码解析 这段代码实现了一个自定义元类MyMateClass通过该元类动态创建测试用例类Xiaozai。 导入需要的模块 wraps函数用于保留被装饰函数的元信息。unittest模块包含了用于编写和运行单元测试的功能。unittestreport模块一个第三方模块用于生成测试报告。 可以通过pip install unittestreport进行下载。 json模块用于处理和解析JSON数据。 定义修饰器函数update_test_func 该函数接受一个测试方法和参数值作为输入。在内部定义一个装饰器函数wrapper用于修改测试方法的调用方式。wrapper函数将调用被装饰的测试方法传递参数值作为参数并返回结果。最后将装饰器函数wrapper返回。 定义元类MyMateClass 重写__new__方法在创建新类时动态添加测试方法。遍历attrs[Cases]中的测试用例数据。通过调用getattr函数获取基类BaseApiCase中的测试方法perform。使用修饰器函数update_test_func对测试方法进行修饰并设置修饰后的方法名为test_{}.format(index)。test_0test_1test_2。使用setattr函数将修饰后的测试方法添加到新创建的类test_cls中。 定义基类BaseApiCase BaseApiCase类定义了一个名为perform的测试方法该方法接受一个参数case。在该方法中打印了测试用例数据并且可以进行数据处理、接口请求、响应数据提取和断言等操作。 在__main__中运行测试用例 通过open函数打开测试用例数据文件并加载JSON数据。创建包含测试用例数据的字典cases。使用自定义的元类MyMateClass创建测试用例类Xiaozai该类继承自unittest.TestCase和BaseApiCase。使用unittest.defaultTestLoader.loadTestsFromTestCase函数将测试用例类中的用例加载到测试套件中。创建unittestreport.TestRunner对象并使用run方法运行测试套件生成测试报告。 知识点扩展setter() 源码展示 def setattr(x, y, v): # real signature unknown; restored from __doc__Sets the named attribute on the given object to the specified value.setattr(x, y, v) is equivalent to x.y vpasssetattr(x, y, v)函数是Python内置函数之一用于设置对象x的属性y的值为v。具体解析如下 x表示需要设置属性的对象。y表示需要设置的属性名。v表示需要设定的属性值。 setattr(x, y, v)函数的作用是将对象x的属性y设置为值v。可以用于动态地为对象添加属性或者修改已有属性的值。如果属性不存在则会创建一个新的属性如果属性已经存在则会修改属性的值。 例如以下示例代码演示了使用setattr()函数修改或创建对象的属性 class MyClass:pass# 创建对象 my_obj MyClass()# 修改属性的值 setattr(my_obj, name, John) print(my_obj.name) # 输出: John# 创建新的属性 setattr(my_obj, age, 25) print(my_obj.age) # 输出: 25在上述示例中通过调用setattr()函数为my_obj对象添加了两个属性name和age。第一个setattr()函数会修改my_obj对象的name属性的值为John第二个setattr()函数会在my_obj对象中创建一个新的age属性并将其值设置为25。 如果你能灵活掌握这两章的内容并且熟悉unittest的源码懂suite的构建你便可以手撸一套测试框架出来。 因为httprunner在底层改为go语言之前便是采用的suite概念。 HttpRunner的数据驱动功能也是通过自定义元类来实现的。元类可以动态地对测试用例类或测试步骤进行修改实现不同的数据输入或参数组合。 好了后续我也会更新go语言

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

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

相关文章

河南小学网站建设养生网站源码下载

不得不说RTL SDR真是神器,直接把SDR的入门门槛拉低到了几十块钱。对于RTL SDR的学习开发,有大佬写的《Software_Defined_Radio_using_MATLAB_Simulink_and_the_RTL-SDR》,另外,除了MATLAB,近些年爆火的PYTHON当然也是可…

AI元人文思想体系:从哲学基础到价值原语博弈的微观机制

AI元人文思想体系:从哲学基础到价值原语博弈的微观机制 图片 AI元人文思想体系:从哲学基础到价值原语博弈的微观机制 引言:时代的岔路口——从工具对齐到主体共生 我们正站在一个文明史的奇点上。通用人工智能(AGI…

做题笔记16

9.24 P8331 [ZJOI2022] 简单题 幽默题 这张图肯定是若干个杏仁拼在一起,证明?随便拿一个杏仁出来,如果我们加边,要么会有一个 \(K_4\) 同胚,要么会有至少一组平行的环,要么仍然是一个杏仁,前面两种情况容易分讨…

条件判断语句

条件判断语句编程的时候经常需要检查一系列的条件,根据判断的条件决定采取什么措施。接下来学习一下IF-ELSE 语句。 1. 条件测试 判断一个表达式是为True或False的行为就是条件测试。 # -*- coding: utf-8 -*- print(…

嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站建设皖icp做网站的价格

​ 2023年9月20~22日,深圳唯创知音电子将在 深圳宝安国际会展中心(9号馆9B1)为您全面展示最新的芯片产品及应用方案,助力传感器行业的发展。 作为全球领先的芯片供应商之一,深圳唯创知音电子一直致力于为提供高质量、…

网站开发与设计期末考试网站优化宝

SD-WAN作为一种先进的网络技术,为企业提供了更加灵活和高效的网络连接方案。然而,在异地组网的过程中,SD-WAN也面临一些挑战。本文将探讨SD-WAN异地组网所面临的难题,并提供相应的解决方案。 挑战一:网络延迟和不稳定性…

网站流量是怎么赚钱的挣钱最快的小游戏

椭圆曲线密码学 (ECC) 是一种基于椭圆曲线数学的公开密钥加密算法。 它提供了一种执行密钥交换、数字签名和加密等加密操作的安全方式。 ECC 为 1977 年首次发布的 Rivest-Shamir-Adleman (RSA) 加密算法提供了一种替代性方案。 继续阅读,进一步了解椭圆曲线密码学…

深入解析:实验室:将 XSS 反映到 HTML 上下文中,大多数标记和属性都被阻止

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:【Qt】信号和槽

深入解析:【Qt】信号和槽2025-09-25 15:31 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

做题笔记6

小王精心做题笔记,堂堂连载! 5.21 昨天讲的网络流 连边时都是形如 \(u\rightarrow v,(cap,cost)\) 的格式 CF2046D For the Emperor! 首先缩点,一下对缩点后的 DAG 考虑,直接费用流建模 考虑记一个很大的数 \(B\),…

第17章 Day20-Day21 逆向爬虫之瑞数6

逆向爬虫之补环境专题 一、补环境的原理 浏览器环境和node环境对比:浏览器下:node.js下当我们辛苦将浏览器环境的加密或者解密入口找到,把加密或者解密的JS的代码拷贝到本地,由node解释器驱动执行的时候,会因为拷…

建一个网站大概需要多少钱同城购物网站建设成本

【🐋和鲸冬令营】通过数据打造爆款社交APP用户行为分析报告 文章目录 【🐋和鲸冬令营】通过数据打造爆款社交APP用户行为分析报告1 业务背景2 数据说明3 数据探索性分析4 用户行为分析4.1 用户属性与行为关系分析4.2 转化行为在不同用户属性群体中的分布…

做网站 域名如何要回android编程

1.同步解释 1.1 同步基础概念 触发器:触发器是控制采集的命令。您可以使用触发器来启动、停止或暂停采集。触发信号可以源自软件或硬件源。 时钟:时钟是用于对数据采集计时的周期性数字信号。根据具体情况,您可以使用时钟信号直接控制数据采…

基于多假设跟踪(MHT)算法的MATLAB实现

一、核心代码 %% MHT多假设跟踪主函数 function mht_demo()% 参数设置num_targets = 3; % 真实目标数量num_scans = 50; % 总扫描次数detection_prob = 0.9; % 检测概率clutter_rate = 0.1; % 杂波密度(…

ROS2之消息接口

ROS2 的三大消息接口 1. 消息(Message, msg)定义文件后缀:.msg作用:用于 话题 (Topic) 通信,节点之间以“流”的方式交换数据。特点:一对多(一个话题可以有多个订阅者/发布者)单向通信(发布 → 订阅)异步(发…

Linux grep cut tomcat logs

截取当天catalina.out日志 grep "2025-09-25" catalina.out > 20250925.log截取指定时间段(2025年9月24日到2025年9月25日)的日志grep "2025-09-2[4-5]" catalina.out >20250924-25.log截取…

软件工程课程第一次团队作业

软件工程课程第一次团队作业这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546…

Vona ORM分表全攻略

针对高并发、数据量大的场景,通常会考虑采用分表机制进行优化。下面以 Model User/Order 为例,通过查询用户的订单列表,来演示分表的使用方法分表 针对高并发、数据量大的场景,通常会考虑采用分表机制进行优化。下…