Ker*_*n_H 2 python post http pytest
我正在为我的 python 应用程序(flask)编写 pytest 测试。AddMessage 函数接收用户输入,生成消息并将其存储在数据库中。
@app.route('/AddMessage',methods = ['POST', 'GET'])
def AddMessage():
if request.method == 'POST':
data = request.form
user_id = data['user_id']
content = data['content']
paticipants = [data['participant1'],data['participant2'],data['participant3']]
m = Message(user_id=user_id,content=content,participants=paticipants)
db.session.add(m)
db.session.commit()
return 'Your message has been successfully saved'
Run Code Online (Sandbox Code Playgroud)
我该如何测试它?毕竟,在测试期间我无法获得输入,不是吗?
你可以试试这个代码:
def test_addMessage(self):
with self.app() as client, self.app_context():
data = {
"user_id": "1",
"content": "a content",
"participant1":"participant1",
"participant2":"participant2",
"participant3":"participants"
}
response = client.post(
"/AddMessage",
data=json.dumps(data),
headers={"Content-Type": "application/json"},
)
self.assertEqual(201, response.status_code)
self.assertEqual('Your message has been successfully saved', response.data)
Run Code Online (Sandbox Code Playgroud)
另一种更简单的方法是提出请求:
import requests
import json
data = {
"user_id": "1",
"content": "a content",
"participant1":"participant1",
"participant2":"participant2",
"participant3":"participants"
}
response = requests.post("/AddMessage", json=json.dumps(data))
json_response = response.json()
print(json_response)
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请阅读请求文档