FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
完整的接口已经开发完成了,那么我们需要对接口进行但愿测试,如何做呢,本文就带着大家去实现下
我们可以先来看下,我们注册的接口的相关的文章,回忆下注册接口的代码。
FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户注册接口开发。
我们来分析下接口:
在借口的文档上面我们已经对接口做了详细的描述,我们在代码实际的开发中也可以看下那时候的代码,那么我们按照接口文档,可以进行我们的用例的设计,设计出来我们的用例需求的相关的case。
两种角色:一种是老师,一种是学生。
对长度的限制:密码和用户名都有长度要求。密码存储是md5加密。
学生有学号,有长度要求,老师是工号有长度要求,且是纯数字。
性别分男女。
年龄要大于18小于65。我们可以根据这些已知的去设计我们的用例。
用例的设计思路:
1.初始化环境
2.初始化参数
3.测试case
4.参数清理
5.环境还原。
我们看下我们最后的case。这里我只是展示了 一些主要的case,最容易出问题的case。
我们按照这个逻辑,去设计下,我们的测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | class FastApiTestUserCreate(unittest.TestCase): @classmethod def setUpClass( cls ) - > None : ''' 初始化测试环境 :return: ''' cls .client = TestClient(app) cls .testurl = "/user/create" @classmethod def tearDownClass( cls ) - > None : ''' 还原测试环境,测试url :return: ''' cls .client = None cls .testurl = '' def setUp( self ) - > None : ''' 初始化参数 :return: ''' self .parame = { "username" : "liwanle1i" , "password" : "123456" , "role" : "学生" , "age" : 19 , 'studentnum' : 20332 } def tearDown( self ) - > None : '''最后清理参数''' self .parame.clear() def test_create_user( self ): '''重复的添加一个数据''' response = self .client.post( self .testurl, json = self .parame) code = response.status_code reslut = response.json() self .assertEqual(code, 200 ) self .assertEqual(reslut[ 'message' ], '用户名重复' ) self .assertEqual(reslut[ 'code' ], 100104 ) def test_create_user_new( self ): '''添加一个新的学生''' self .parame[ 'username' ] = str (uuid.uuid1())[: 9 ] response = self .client.post( self .testurl, json = self .parame) code = response.status_code reslut = response.json() self .assertEqual(code, 200 ) self .assertEqual(reslut[ 'code' ], 200 ) self .assertEqual(reslut[ 'message' ], 'success' ) def test_create_user_new_tearcher( self ): '''添加一个新的教师''' self .parame[ 'username' ] = str (uuid.uuid1())[: 9 ] self .parame[ 'role' ] = "教师" self .parame[ 'jobnum' ] = 93928 self .parame[ 'sex' ] = "女" response = self .client.post( self .testurl, json = self .parame) code = response.status_code reslut = response.json() self .assertEqual(code, 200 ) self .assertEqual(reslut[ 'code' ], 200 ) self .assertEqual(reslut[ 'message' ], 'success' ) def test_create_user_new_one( self ): '''测试学生没有填写学籍号''' self .parame[ 'username' ] = str (uuid.uuid1())[: 9 ] self .parame.pop( "studentnum" ) response = self .client.post( self .testurl, json = self .parame) code = response.status_code reslut = response.json() self .assertEqual(code, 200 ) self .assertEqual(reslut[ 'code' ], 100102 ) self .assertEqual(reslut[ 'message' ], '身份和对应号不匹配' ) def test_create_user_new_tearcher_one( self ): ''' 测试老师的工作号不填写 ''' self .parame[ 'username' ] = str (uuid.uuid1())[: 9 ] self .parame[ 'role' ] = "教师" self .parame[ 'sex' ] = "女" response = self .client.post( self .testurl, json = self .parame) code = response.status_code reslut = response.json() self .assertEqual(code, 200 ) self .assertEqual(reslut[ 'code' ], 100102 ) self .assertEqual(reslut[ 'message' ], '身份和对应号不匹配' ) if __name__ = = "__main__" : unittest.main() |
case我只是列举了一部分,当然还需要补充很多。但是这里面最重要的case场景我覆盖了。注册学生和老师,且都要用学号或者工号,重复数据不能重复添加。
大家可以填写好入参,然后根据正交的方式,进行两两组和用例,这些覆盖更多的场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?