06 2023 档案
摘要:### 需求描述 假设[YApi](http://yapi.smart-xwork.cn/)是你公司产品,或你们自动化需要经常与YApi平台进行交互,需要你开发一款Python库,并封装一下YApi平台的常用操作,如创建项目、新建接口、接口分类、添加用户、添加测试集合等等。例如 安装你的库后: ``
阅读全文
摘要:## 上下文管理器 ### 定义 - 包装任意代码 - 确保执行的一致性 ### 语法 - with语句 - __enter__和__exit__方法 ```python class ContextManager(object): def __init__(self): self.entered =
阅读全文
摘要:```python import typing from typing import Union from functools import wraps def merge_args(varnames: tuple, args: tuple, kwargs: dict) -> dict: merge
阅读全文
摘要:在Python中一切皆对象,函数也是一种对象,有相关的属性和方法。 对于任意对象,我们可以用dir()函数来获取其内置的属性及方法名,例如: ```python def add(a: int, b: int=1) -> int: """加法函数""" return a + b print(dir(a
阅读全文
摘要:TDL(Tests Description Language ) 基于JSON的测试描述语言, 用于描述测试用例、测试套件、测试报告等相关实体及属性 设计初衷 为不同的程序语言(Python、Java、Golang等)提供一种通用的测试用例等对象的序列化参考格式 为基于文件系统的测试框架(Test
阅读全文
摘要:## 项目结构设置 在项目目录中建议建一个包,所有的代码实现放到包下,示例如下 ``` excel-runner # 项目目录,可以包含中划线 excel_runner/ # 包名,只能包含字母数字下划线,不能包含中划线 __init__.py runner.py # 代码实现 setup.py #
阅读全文
摘要:装饰模式是一种结构型设计模式,它允许我们动态地将行为添加到对象中,而不需要使用继承。装饰模式通常包括以下几个角色: - 抽象组件(Component):定义了一个接口,用于被装饰对象和装饰器共同实现。 - 具体组件(Concrete Component):实现了抽象组件定义的接口,并提供了默认的行为
阅读全文
摘要:模板模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。模板模式通常包括以下几个角色: - 抽象类(Abstract Class):定义了一个算法的骨架,其中包含一些抽象方法,用于延迟到子类中实现。 - 具体类(Concrete Class):实现了抽象类定义的接口,并实现
阅读全文
摘要:解释器模式是一种行为型设计模式,它定义了一种语言,用于解释和执行特定的任务。解释器模式通常包括以下几个角色: - 抽象表达式(Abstract Expression):定义了一个接口,用于解释和执行特定的任务。 - 终结符表达式(Terminal Expression):实现了抽象表达式定义的接口,
阅读全文
摘要:迭代器模式是一种行为型设计模式,它允许我们按照顺序访问一个聚合对象中的元素,而不需要暴露该对象的内部表示。迭代器模式通常包括以下几个角色: - 迭代器(Iterator):定义了一个接口,用于按照顺序访问聚合对象中的元素。 - 具体迭代器(Concrete Iterator):实现了迭代器定义的接口
阅读全文
摘要:备忘录模式是一种行为型设计模式,它允许我们在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。备忘录模式通常包括以下几个角色: - 发起人(Originator):定义了一个接口,用于创建备忘录对象和恢复对象状态。 - 备忘录(Memento):存储发起人对象的内部状态。 -
阅读全文
摘要:中介模式是一种行为型设计模式,它允许对象之间通过一个中介对象进行通信,从而减少对象之间的直接耦合。中介模式通常包括以下几个角色: - 中介者(Mediator):定义了一个接口,用于与各个同事对象通信,并协调它们之间的交互。 - 具体中介者(Concrete Mediator):实现了中介者定义的接
阅读全文
摘要: 外观模式是一种结构型设计模式,它为复杂的子系统提供了一个简单的接口,从而隐藏了子系统的复杂性。外观模式通
阅读全文
摘要:命令模式是一种行为型设计模式,它将请求封装成对象,从而允许我们将请求的发送者和接收者之间的耦合关系解耦。命令模式通常包括以下几个角色: - 命令(Command):定义了一个接口,用于封装具体命令的实现。 - 具体命令(Concrete Command):实现了命令定义的接口,并具体地实现了命令的逻
阅读全文
摘要:责任链模式是一种行为型设计模式,它允许多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。责任链模式通常包括以下几个角色: - 抽象处理者(Handler):定义了一个接口,用于处理请求,并维护一个对下一个处理者的引用。 - 具体处理者(Concrete Handler):实现了
阅读全文
摘要:策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式通常包括以下几个角色: - 环境(Context):维护一个对策略对象的引用,并将客户端请求委托给当前策略对象。 - 抽象策略(Strategy):定义了一个接口,用于封装具体算法的实现。 - 具体策
阅读全文
摘要:状态模式是一种行为型设计模式,它允许对象在内部状态发生改变时改变它的行为。状态模式通常包括以下几个角色: - 环境(Context):定义了客户端感兴趣的接口,并维护一个当前状态对象。 - 抽象状态(State):定义了一个接口,用于封装与环境的一个特定状态相关的行为。 - 具体状态(Concret
阅读全文
摘要:观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它会自动通知所有观察者对象,使它们能够及时更新自己的状态。观察者模式通常包括以下几个角色: - 主题(Subject):定义了被观察的对象,可以有多个观察者监听它。 - 观察者
阅读全文
摘要:享元模式是一种结构型设计模式,它通过共享对象来减少内存使用和对象创建的数量。享元模式通常包括以下几个角色: - 享元工厂(Flyweight Factory):负责创建和管理享元对象。 - 享元(Flyweight):表示共享的对象,包含内部状态和外部状态。 - 内部状态(Intrinsic Sta
阅读全文
摘要:外观模式是一种结构型设计模式,它提供了一个简单的接口,隐藏了系统的复杂性,使得客户端可以更容易地使用系统。外观模式通常包括以下几个角色: - 外观(Facade):提供了一个简单的接口,隐藏了系统的复杂性,使得客户端可以更容易地使用系统。 - 子系统(Subsystem):实现了系统的功能,但对客户
阅读全文
摘要:模式是一种结构型设计模式,它允许我们将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式通常包括以下几个角色: - 组件(Component):定义了组合中所有对象的通用接口,可以是一个抽象类或接口。 - 叶子节点(Leaf):表示组合中的叶子节点,它没有子节点。 - 组合节点(Compos
阅读全文
摘要:桥接模式是一种结构型设计模式,它将抽象部分和实现部分分离开来,使它们可以独立地变化。桥接模式通常包括以下几个角色: - 抽象部分(Abstraction):定义了抽象部分的接口,并持有一个实现部分的引用。 - 扩展抽象部分(Refined Abstraction):扩展了抽象部分的接口,可以包含一些
阅读全文
摘要:代理模式是一种结构型设计模式,它提供了一个代理对象来控制对另一个对象的访问。代理模式通常包括以下几个角色: - 抽象主题(Subject):定义了代理对象和真实对象的公共接口,可以是一个抽象类或接口。 - 真实主题(Real Subject):定义了代理对象所代表的真实对象。 - 代理(Proxy)
阅读全文
摘要:适配器模式是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常包括以下几个角色: - 目标接口(Target):定义了客户端所期望的接口,可以是一个抽象类或接口。 - 适配器(Adapter):实现了目标接口,并持有一个被适配对象的引用,负责将客户端的请求转换成被
阅读全文
摘要:单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。单例模式通常包括以下几个角色: - 单例(Singleton):定义了一个静态方法或类方法,用于获取单例对象。 - 客户端(Client):使用单例对象来完成具体的操作。 下面是一个简单的 Python 示例,演示了如何使
阅读全文
摘要:原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类来创建新对象。原型模式通常包括以下几个角色: - 原型(Prototype):定义了一个克隆自身的接口,用于复制现有对象。 - 具体原型(Concrete Prototype):实现了原型接口,负责复制自身。 - 客户端
阅读全文
摘要:建造者模式是一种创建型设计模式,它可以将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常包括以下几个角色: - 产品(Product):表示被构建的复杂对象,通常包含多个部分或组件。 - 抽象建造者(Builder):定义了创建产品的抽象接口,包括创建产品的各
阅读全文
摘要:## 简单版 读取以下格式excel(仅第一张Sheet), 逐个发送接口,断言接口返回200, 并将状态及错误信息写回Excel : # 装饰器,参数接收一个函数,返回一个函数 @functools.wraps(func) def wrapper(*args, **kwargs):
阅读全文
摘要:## 堆 堆(Heap)是一种特殊的树形数据结构,它满足以下两个条件: 堆是一棵完全二叉树,即除了最后一层,其他层都是满的,最后一层从左到右填满。 堆中每个节点的值都大于等于(或小于等于)其子节点的值,这种性质称为堆序性。 根据堆序性,堆可以分为两种类型: - 大根堆(Max Heap):每个节点的
阅读全文
摘要:## 工厂模式 工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需指定将要创建的对象的确切类。工厂模式通过定义一个工厂接口来创建对象,让子类决定实例化哪个类。这样可以将对象的创建与使用分离,从而降低系统的耦合度。 工厂模式包含三种角色: - 具体工
阅读全文
摘要:## 散列表 散列表(Hash Table),也称为哈希表,是一种基于哈希函数(Hash Function)实现的数据结构,它支持快速的插入、删除和查找操作。 散列表将每个元素的关键字(Key)通过哈希函数映射到一个固定的位置,称为散列值(Hash Value),然后将元素存储在该位置上。 的多人合作测试框架,已经积累了很多测试用例,但是随着用例的增多,发现一些问题: > 1. 需要统计下每个模块、每个人的用例数量 > 2. 最开始的用例优先
阅读全文

浙公网安备 33010602011771号