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


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


相关文章
|
JSON API 数据格式
FastApi的搭建与测试
FastApi的搭建与测试
199 0
|
3月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
1月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
90 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
3月前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
|
3月前
|
网络协议 Go
关于fastapi异步接口卡死的坑及解决
开发任务是使用fastapi去写一个对工业设备(PLC)的通信接口,方便其他后端服务与设备对接,将设备的功能抽象出来供MES调用。 通信协议是使用modbus TCP,由于fastapi是异步框架,很多以前在同步函数里开发的代码移植过来发现出现了异常,这也是不断踩坑的过程,问题解决之后也能体会到异步框架的优美与高效。
|
3月前
|
中间件 测试技术 持续交付
FastAPI测试秘籍:如何通过细致的测试策略确保你的代码在真实世界的挑战面前保持正确和稳定?
【8月更文挑战第31天】在软件开发中,测试至关重要,尤其在动态语言如Python中。FastAPI不仅简化了Web应用开发,还提供了强大的测试工具。通过`unittest`框架和Starlette测试客户端,开发者可以轻松编写和执行测试用例,确保每个功能按预期工作。本文将详细介绍如何设置测试环境、编写基础和高级测试用例,并探讨中间件和依赖项测试。此外,还将介绍如何在持续集成环境中自动化测试,确保代码质量和稳定性。利用FastAPI的测试工具,你可以构建出高效可靠的Web应用。
43 0
|
3月前
|
API Python
在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
38 0
|
6月前
|
Android开发 数据安全/隐私保护 iOS开发
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
282 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
|
11月前
|
存储 测试技术 数据安全/隐私保护
登陆注册的测试用例
登陆注册的测试用例
145 2
|
11月前
|
Web App开发 测试技术 Python
python写的登陆注册测试用例
python写的登陆注册测试用例
84 1

热门文章

最新文章

下一篇
无影云桌面