单元测试框架
项目创建
被测代码
示例代码
"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
class HeroManagement:
"""
游戏中的英雄管理
"""
def __init__(self):
self.hero_list = []
def update_hero(self, hero_name, hero_volume):
for i in self.hero_list:
if i.get("name") == hero_name:
i["volume"] = hero_volume
return i
return False
def delete_hero(self, hero_name):
"""
:param hero_list: 英雄列表信息
:param hero_name: 英雄的名字
:return:
"""
for i in self.hero_list:
if hero_name == i["name"]:
self.hero_list.remove(i)
return self.hero_list
return False
def create_hero(self, hero_name, hero_volume, hero_power):
if hero_volume<=0 or hero_volume >= 100:
return False
if hero_power <=0:
return False
hero_info = {"name": hero_name, "volume": hero_volume, "power": hero_power}
self.hero_list.append(hero_info)
return True
def find_hero(self, res):
"""
如果查询到英雄,则返回英雄信息。
如果没有查询到英雄,则返回False
:param res:
:return:
"""
# 遍历所有的英雄信息,
for i in self.hero_list:
if res == i["name"]:
return i
return False
IDE的自动生成与重构
利用人工智能(ChatGPT) 自动分析代码画图
这是一段python代码
from src.hero.hero import Hero
class HeroManager:
def __init__(self):
self.hero_list: list[Hero] = []
def add(self, hero: Hero):
hero_name_list = [hero.name for hero in self.hero_list]
# bug 如果一个英雄名字相同,但是power 和 volume不同,是可以被加进去的
if hero.name not in hero_name_list:
self.hero_list.append(hero)
# self.hero_list.append(hero)
def delete(self, name):
for i in range(len(self.hero_list)):
if self.hero_list[i].name == name:
self.hero_list.remove(self.hero_list[i])
return
def update(self, hero: Hero):
# for item in self.hero_list:
# if item.name == hero.name:
# item = hero
for i in range(len(self.hero_list)):
if self.hero_list[i].name == hero.name:
self.hero_list[i] = hero
def find(self, name):
for item in self.hero_list:
if item.name == name:
return item
请帮我画一份流程图,使用plantuml的活动图格式,以markdown返回
实战练习
自动化测试框架
课后练习
https://material.hogwarts.ceshiren.com/resource/pytest_test_framework/L3/homework/英雄管理系统实战.L3.html