尝试在 Python 3.4、Tornado 版本 4.1 上使用 AsyncHTTPTestCase
测试 POST
请求。
from tornado.testing import AsyncHTTPTestCase
from myapp import myclass
class TestFooHandler(AsyncHTTPTestCase):
def get_app(self):
return myclass.application
def test_post_handler(self):
import urllib.parse
post_body = urllib.parse.urlencode({"key":"val"})
response = self.fetch("/foo", method="POST", data=post_body)
self.assertEqual(response.code, 200)
代码失败并显示消息:
意外的关键字参数“data”
这是完整的轨迹:
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/tornado/testing.py", line 120, in __call__
result = self.orig_method(*args, **kwargs)
File "/home/gub/App/unit_tests/test_cors.py", line 22, in test_post_handler
response = self.fetch("/foo", method="POST", data=post_body)
File "/usr/local/lib/python3.4/dist-packages/tornado/testing.py", line 380, in fetch
self.http_client.fetch(self.get_url(path), self.stop, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/tornado/httpclient.py", line 227, in fetch
request = HTTPRequest(url=request, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'data'
上面的代码哪里不对?
最佳答案
参数名称是body
,而不是data
。 self.fetch("/foo", method="POST", body=post_body)
关于python - AsyncHTTPTestCase Post 请求传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353768/