【发布时间】:2020-10-22 21:10:44
【问题描述】:
我在 web2py 的 default.py 控制器中编写了名为 foobar 的端点,看起来像
@service.json
def foobar(*args, **vars):
payload = request.vars.student
print(payload)
#Above payload prints [rollNo, firstName, lastName]
#Expected is {"rollNo": 6299857, "FirstName": Prasad, "LastName": Telkikar}
fileObj= request.vars.video
studentActivity = fileObj.file.read()
#Currently I am unable to do it from unit test, but it works from postman
print(f"Student's Roll number = {payload.rollNo} \n FirstName = {payload.firstName}, \n lastName = {payload.lastName}, fileSize = {fileObj.file.tell()}")
#storing studentActivity video to specific location
#Doing business logic
现在我正在为此端点编写单元测试,我正在尝试使用requests 调用此端点,
import requests
import unittest
...
class TestStudentsData(unittest.TestCase):
def test_Individual_student(self):
payload = dict(rollNo=6299857, firstName="Prasad", lastName="Telkikar")
url = "http://127.0.0.1:8000/v1/foobar"
header = dict(Authorization="Bearer <Token>")
response = requests.post(url,files={'studentActivity':open("Activity.mp4", 'rb')}, data=payload, headers=headers)
self.assertEqual(response.status_code, 200)
if __name__ == '__main__':
unittest.main(verbosity=2)
这里我无法将学生有效负载作为json 传递。
如何使用请求传递带有
studentActivity文件的json有效负载?
到目前为止我尝试了什么?
- 我尝试了this SO answer 中给出的两种方法。
- 我阅读了
requests文档,其中说 “如果传递数据或文件,则忽略 json 参数” requests documentation
【问题讨论】:
标签: python python-requests python-unittest web2py pythonanywhere