完整的接口已經開發完成了,那麼我們需要對接口進行但願測試,如何做呢,本文就帶着大家去實現下
我們可以先來看下,我們註冊的接口的相關的文章,回憶下注冊接口的代碼。
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場景我覆蓋了。註冊學生和老師,且都要用學號或者工號,重複數據不能重複添加。
大家可以填寫好入參,然後根據正交的方式,進行兩兩組和用例,這些覆蓋更多的場景。