FastAPI(八十三)實戰開發《在線課程學習系統》--註冊接口單元測試 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場景我覆蓋了。註冊學生和老師,且都要用學號或者工號,重複數據不能重複添加。

        大家可以填寫好入參,然後根據正交的方式,進行兩兩組和用例,這些覆蓋更多的場景。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章