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


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

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

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

            我们来分析下接口:

      在借口的文档上面我们已经对接口做了详细的描述,我们在代码实际的开发中也可以看下那时候的代码,那么我们按照接口文档,可以进行我们的用例的设计,设计出来我们的用例需求的相关的case。

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

           对长度的限制:密码和用户名都有长度要求。密码存储是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场景我覆盖了。注册学生和老师,且都要用学号或者工号,重复数据不能重复添加。

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

  • 相关阅读:
    Jquery.validate.js表单验证插件的使用
    UEditor编辑文章出现多余空行问题的解决办法
    jQuery问题:$XXX is not a function
    PHP+memcache扩展(集成环境wampserver环境下)
    Provider 错误 '80004005' 未指定的错误 /conn.asp,行 23
    PHP+MD5
    Mysql(Mariadb) 基础操作语句 (持续更新)
    什么是存储引擎以及不同存储引擎特点
    微信网页授权(OAuth2.0) PHP 源码简单实现
    字符集和字符集编码详解
  • 原文地址:https://www.cnblogs.com/leiziv5/p/16098474.html
Copyright © 2020-2023  润新知