FastAPI(八十八)实战开发《在线课程学习系统》-- 查看留言列表接口测试和回复留言接口测试

2021-12-01 18:25:09 浏览数 (1)

前言

我们上一次分享了FastAPI(八十七)实战开发《在线课程学习系统》-- 查看留言接口测试,这次我们看下查看留言列表接口测试和回复留言接口测试

正文

一、留言列表接口测试

在之前的接口的开发中,FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言。这个就是留言列表的开发,我们可以按照这个做测试。

其实设计下相关的case场景,就是未登陆查看,和登陆。

代码语言:javascript复制
1.未登陆

2.查看留言列表

我们看下如何实现

代码语言:javascript复制
import unittest
from test.userlogin import student_parame,get_students_token
import requests
from  config import  *

class TestMessageListCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        cls.url = testplan '/user/messagelist'
        cls.token = get_students_token(student_parame)
    @classmethod
    def tearDownClass(cls) -> None:
        cls.url=''
    def setUp(self) -> None:
        pass
    def tearDown(self) -> None:
        self.text=''
    def testuser_not_login(self):
        reponse=requests.get(self.url)
        status=reponse.status_code
        reslut=reponse.json()
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 421)

    def testuser_login_id(self):
        headers = {
            "token": self.token
        }
        reponse = requests.get(self.url,headers=headers)
        status = reponse.status_code
        reslut = reponse.json()
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 200)

if __name__ == '__main__':
    unittest.main()

这里没有什么特殊的,我们完成了接口的测试。

这里的接口测试没有那么难。

二、回复留言接口测试

设计下我们的场景case

代码语言:javascript复制
1.未登陆

2.回复留言不存在

3.回复留言过长

4.正确回复

具体的实现如下;

代码语言:javascript复制
import unittest
from test.userlogin import student_parame,get_students_token
import requests,random,string
from  test.pyopearmysql import *
def randomtext(lengths=4):
    return ''.join(random.sample(string.ascii_letters   string.digits, lengths))

class TestMessageListCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        cls.url = testplan '/user/rebackmessage'
        cls.token = get_students_token(student_parame)
        cls.connct = OpearMysql()
    @classmethod
    def tearDownClass(cls) -> None:
        cls.url=''
    def setUp(self) -> None:
        pass
    def tearDown(self) -> None:
        self.text=''
    def testuser_not_login(self):
        reponse=requests.post(self.url)
        status=reponse.status_code
        reslut=reponse.json()
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 421)

    def testuser_login_less(self):
        headers = {
            "token": self.token
        }
        data={
            'rebackid':1,
            'connect':randomtext(4),
            "id":1
        }
        reponse = requests.post(self.url,json=data,headers=headers)
        status = reponse.status_code
        reslut = reponse.json()
        print(reslut)
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 100803)
        self.assertEqual(reslut['message'], "回复内容应该在5-500字")
    def testuser_login_big(self):
        headers = {
            "token": self.token
        }
        data={
            'rebackid':1,
            'connect':randomtext(4)*200,
            "id":1
        }
        reponse = requests.post(self.url,json=data,headers=headers)
        status = reponse.status_code
        reslut = reponse.json()
        print(reslut)
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 100803)
        self.assertEqual(reslut['message'], "回复内容应该在5-500字")
    def testuser_success(self):
        headers = {
            "token": self.token
        }
        data={
            'rebackid':1,
            'connect':randomtext(8),
            "id":1
        }
        reponse = requests.post(self.url,json=data,headers=headers)
        status = reponse.status_code
        reslut = reponse.json()
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 200)
        self.assertEqual(reslut['message'], "成功")
    def testuser__not(self):
        headers = {
            "token": self.token
        }
        selectid = self.connct.run(
            "SELECT messages.id FROM messages WHERE senduser in (SELECT id FROM users  WHERE username !='liwanle1i' )")
        data={
            'rebackid':int(selectid[-1][0])   1,
            'connect':randomtext(8),
            "id":int(selectid[-1][0])   1
        }
        reponse = requests.post(self.url,json=data,headers=headers)
        status = reponse.status_code
        reslut = reponse.json()
        self.assertEqual(status, 200)
        self.assertEqual(reslut['code'], 100804)
        self.assertEqual(reslut['message'], "回复留言id不存在")
if __name__ == '__main__':
    unittest.main()

这就是回复留言的接口测试。我们发现了一个问题,对之前的代码进行修改。

代码语言:javascript复制
def db_creat_rebackmessage(db: Session, reback: RebackMessConnet, senduser: int):
    times = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")
    reabck = Message(pid=reback.id,context=reback.connect)
    reabck.sendtime = times
    reabck.senduser = senduser
    db.add(reabck)
    db.commit()  # 提交保存到数据库中
    db.refresh(reabck)  # 刷新
    return reabck

其实接口测试就是这样,不断的去构造我们的测试场景,发现bug,开发然后修改对应的问题即可。

0 人点赞