前言
我们上一次分享了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,开发然后修改对应的问题即可。