我试图在我的标题请求中设置一个令牌进行单元测试
def setUp(self):
#app = Flask(__name__)
self.app = main.application.test_client()
def login(self):
payload = {"user": "*******", "password": "******"}
url ='/user/auth'
headers = {'Content-Type': 'application/json'}
response = self.app.post(url, data=json.dumps(payload), headers=headers)
result = json.loads(response.data)
token = str(result["data"]["Token"])
headers={'Content-Type': 'application/json','Token':token}
return headers
def GetTool(self):
headers= self.login()
return self.app.get('/tool/all',headers=headers,follow_redirects=True)
但标题没有设置...我知道,因为我正在打印。见下文
@toolAPI.route('/tool/all/', methods=['GET'])
#@authService.authorized
def getAllTools():
print '*request headers'
print request.headers
try:
......
这就是我在日志中得到的:
8:27:07 [MainThread ] [INFO ] ######HTTP MODE######
18:27:07 [MainThread ] [INFO ] *request headers
18:27:07 [MainThread ] [INFO ] Host: localhost
18:27:07 [MainThread ] [INFO ] Content-Length: 0
18:27:07 [MainThread ] [INFO ] Content-Type
任何建议是什么问题?
在您的测试文件中。
class TestYourthing(unittest.TestCase):
def setUp(self):
self.client = main.app.test_client()
# get your token from somewhere
self.headers = {'Content-Type': 'application/json', 'Token': token}
def test_forbidden_get(self):
"""GET is forbidden for this route."""
rv = self.client.get('/somewhere', headers=self.headers)
self.assertEqual(rv.status_code, 404)
# if you need to update locally the headers for a test
def test_post_working(self):
"""testing POST for blah"""
# Adding another header here
self.headers.update({'X-Blah': 'ping'})
rv = self.client.post('/somewhere', headers=self.headers)
self.assertEqual(rv.status_code, 200)
我发现我可以像这样设置HTTP头:
client.environ_base['HTTP_ACCEPT'] = 'application/xml'
response = client.get("/", follow_redirects=True)
客户端似乎在执行请求之前剥离了“HTTP_”前缀。