FastAPI(八十四)实战开发《在线课程学习系统》--个人信息接口测试

2021-11-23 11:22:28 浏览数 (1)

前言

我们上一次分享了FastAPI(八十三)实战开发《在线课程学习系统》--登陆接口测试,这次我们看下登陆用户信息

正文

获取用户信息接口,那么我们看下FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发接口的代码,那么我们根据设计测试用例。

1.首先未登陆,提示未登陆错误

2.登陆,获取用户信息

那么我们去写下对应的用例。

用例1很简单。

代码语言:javascript复制
import  unittest,requests
class UserGetCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:

        cls.url = 'http://127.0.0.1:8000/user/getcuruser/'

    @classmethod
    def tearDownClass(cls) -> None:
        '''
        还原测试环境,测试url
        :return:
        '''
        cls.url = ''
    def test_usernotLogin(self)->None:
        reponse = requests.get(self.url)
        status = reponse.status_code
        reslut = reponse.json()
        self.assertEqual(status,200)
        self.assertEqual(reslut['code'],421)

那么我们看下第二个用例怎么设计。

其实这里是直接调用登陆,那么我们可以在用例中这么实现

代码语言:javascript复制
    def test_user_not_exict(self)->None:
        self.login_url = 'http://127.0.0.1:8000/user/login/'
        self.parame = {
            "username": "liwanle1i",
            "password": "123456"
        }
        reponse = requests.post(self.login_url, json=self.parame)

        reslut = reponse.json()
        self.token = reslut['data']['token']
        headers={
            "token":self.token
        }
        reponse = requests.get(self.url,headers=headers)
        reslut = reponse.json()
        self.assertEqual(reponse.status_code,200)
        self.assertEqual(reslut['message'],'成功')
        self.assertEqual(reslut['data']['username'],self.parame['username'])

先调用登陆进行登陆,获取token,这样两个用例就实现完毕。

我们可以启动后台,然后进行接口测试。

其实这里的实现很简单,但是依赖登陆的,我们是否可以抽离出来。封装成对应的方法。

后续很多接口都会使用,我们直接抽离出来使用。

代码语言:javascript复制
import  requests
login_url = 'http://127.0.0.1:8000/user/login/'
student_parame={
        "username": "liwanle1i",
        "password": "123456"
    }
teacher_parame= {
        "username": "liwanlei",
        "password": "123456"
    }
def get_students_token() ->str:

    reponse = requests.post(login_url, json=student_parame)

    reslut = reponse.json()
    token = reslut['data']['token']
    return  token
def get_teacher_tone()->str:

    reponse = requests.post(login_url, json=teacher_parame)

    reslut = reponse.json()
    token = reslut['data']['token']
    return token

那么我们看下如何使用

代码语言:javascript复制
from test.userlogin import *
def test_user_not_exict(self)->None:

        self.token = get_students_token()
        headers={
            "token":self.token
        }
        reponse = requests.get(self.url,headers=headers)
        reslut = reponse.json()
        self.assertEqual(reponse.status_code,200)
        self.assertEqual(reslut['message'],'成功')
        self.assertEqual(reslut['data']['username'],student_parame['username'])

我们的用例还可以在增加一个获取老师的个人信息的

代码语言:javascript复制
    def  test_get_teacher(self):
        self.token = get_teacher_tone()
        headers = {
            "token": self.token
        }
        reponse = requests.get(self.url, headers=headers)
        reslut = reponse.json()
        self.assertEqual(reponse.status_code, 200)
        self.assertEqual(reslut['message'], '成功')
        self.assertEqual(reslut['data']['username'], teacher_parame['username'])
        self.assertIn("jobnum",reslut['data'])

我们在判断老师登陆后的个人信息的时候,我们增加了一个jobnum的判断。

后记

发现问题,解决问题。遇到问题,慢慢解决问题即可。

欢迎关注雷子说测试开发,后续将会持续为大家分享更多的技术知识

如果你有问题可以留言或者加我微信:952943386。

2021,一起牛转钱坤,一起牛逼。

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

0 人点赞