Day5-平台开发阶段考试
简答题
- 字符串逆序。
- is和==的区别
- 列表和元组的区别
- 深拷贝和浅拷贝
- 面向对象3大特性
- 什么是多态
- python引用参数和值参数的区别
- 队列和栈的区别
编程题
- 卡牌游戏
- 冒泡排序
- 二分查找
- 快速排序
- 写一个装饰器
- 斐波那契数列,递归实现。
卡牌游戏题目描述
- 心算项目的挑战比赛中
- 要求选手从
N
张卡牌中选出cnt
张卡牌 - 若这
cnt
张卡牌数字总和为偶数,则选手成绩「有效」且得分为cnt
张卡牌数字总和。 - 给定数组
cards
和cnt
- 其中
cards[i]
表示第i
张卡牌上的数字 - 请帮参赛选手计算最大的有效得分,若不存在获取有效得分的卡牌方案,则返回
0
。 - 示例
# 示例 1: # 输入:cards = [1,2,8,9], cnt = 3 # 输出:18 # 解释:选择数字为 1、8、9 的这三张卡牌,此时可获得最大的有效得分 1+8+9=18。 # 示例 2: # 输入:cards = [3,3,1], cnt = 1 # 输出:0 # 解释:不存在获取有效得分的卡牌方案。
装饰器题目描述
编写一个装饰器 log_execution,用于记录函数的执行时间和调用次数。装饰器应该能够记录每次函数调用的时间、输入参数和返回值,并在函数执行完毕后打印出执行时间和调用次数。装饰器应该能够应用于任何函数,并在函数执行完毕后打印出调用日志。
要求
- 实现一个装饰器 log_execution,用于记录函数的执行时间和调用次数。
- 装饰器应该能够记录每次函数调用的时间、输入参数和返回值,并在函数执行完毕后打印出执行时间和调用次数。
- 装饰器应该能够应用于任何函数,并在函数执行完毕后打印出调用日志。
- 编写测试代码,验证装饰器的功能。
综合实战
测试管理系统
项目概述
开发一个面向对象的测试管理系统。
使用面向对象的编程方法实现用例和Bug的增删改查操作。
系统所有数据将在内存中进行管理。
测试用例创建的时候可以没有bug的id,但如果创建或者修改用例包含了bug的id则需要校验bug的存在性。
功能模块
用例数据模型类 Testcase
定义用例数据结构,包含以下属性:
cid
: 用例编号,作为唯一标识。module
: 功能模块。title
: 测试标题。priority
: 优先级别。condition
: 前置条件。step
: 测试步骤。expected
: 预期结果。actual
: 实际结果。bug_id
: 关联Bug的ID。
需完成模型类中初始化方法和对象描述方法的实现。
Bug数据模型类 Bug
定义Bug数据结构,包含以下属性:
bid
: Bug编号,作为唯一标识。description
: Bug描述。status
: Bug状态(如:新建、已修复、已关闭等)。
Bug管理类 BugManager
封装Bug管理的业务逻辑,包括:
bugs
: 一个列表,用于存储所有Bug
实例。list_bugs()
: 返回所有Bug的数据。add_bug(bug)
: 将新的Bug
实例添加到bugs
列表。get_bug(bid)
: 根据Bug编号从bugs
中查找并返回Bug
实例。update_bug(bid, bug)
: 根据Bug编号更新bugs
中的Bug
实例。delete_bug(bid)
: 根据Bug编号从bugs
中删除Bug
实例。
用例管理类 TestcaseManager
封装用例管理的业务逻辑,包括:
testcases
: 一个列表,用于存储所有Testcase
实例。list_testcases()
: 返回所有测试用例的数据。add_testcase(testcase)
: 将新的Testcase
实例添加到testcases
列表。get_testcase(cid)
: 根据用例编号从testcases
中查找并返回Testcase
实例。update_testcase(cid, testcase)
: 根据用例编号更新testcases
中的Testcase
实例。delete_testcase(cid)
: 根据用例编号从testcases
中删除Testcase
实例。search_testcases(module=None, priority=None, bug_id=None)
: 根据条件搜索测试用例。
功能测试
代码完成后,需要编写代码,通过用例管理类的实例对象调用各个方法对管理类中的方法功能进行测试。
测试代码不需要使用 pytest 测试框架