FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试

简介: FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试

  完整的接口已经开发完成了,那么我们需要对接口进行但愿测试,如何做呢,本文就带着大家去实现下


我们可以先来看下,我们注册的接口的相关的文章,回忆下注册接口的代码。


 FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户注册接口开发。


       我们来分析下接口:


image.png

      两种角色:一种是老师,一种是学生。


      对长度的限制:密码和用户名都有长度要求。密码存储是md5加密。


     学生有学号,有长度要求,老师是工号有长度要求,且是纯数字。


     性别分男女。


    年龄要大于18小于65。我们可以根据这些已知的去设计我们的用例。


     用例的设计思路:

 

      1.初始化环境

      2.初始化参数

      3.测试case

      4.参数清理

      5.环境还原。


       我们看下我们最后的case。这里我只是展示了 一些主要的case,最容易出问题的case。


我们按照这个逻辑,去设计下,我们的测试用例


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场景我覆盖了。注册学生和老师,且都要用学号或者工号,重复数据不能重复添加。


       大家可以填写好入参,然后根据正交的方式,进行两两组和用例,这些覆盖更多的场景。


相关文章
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
8月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1241 23
|
10月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
1624 24
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
948 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
10月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
488 2
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
740 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
11月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
442 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
11月前
|
监控 API 开发工具
Socket.IO介绍,以及怎么连接测试Socket.IO接口?
Socket.IO 是一个用于浏览器和服务器间实时双向通信的库,支持低延迟消息传递、跨平台运行及自动重连。文章介绍了其特点与调试需求,并详细说明如何使用 Apifox 工具创建、连接、发送/接收 Socket.IO 事件,以及团队协作和调试技巧。掌握这些技能可提升实时应用开发效率与质量。
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。