2016-12-25 7 views
1

내가 단위 테스트파이썬 플라스크

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) 

내 헤더 요청에 토큰을 설정하려고 요청하지만 헤더가 설정되지 않은 내가 인쇄이기 때문에 그거.

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 

어떤 제안 문제가 무엇 : 이 내가 로그에 무엇을 얻을

@toolAPI.route('/tool/all/', methods=['GET']) 
#@authService.authorized 
def getAllTools(): 
    print '*request headers' 
    print request.headers 
    try: 
     ...... 

아래를 참조하십시오?

+0

[mcve]를 제공하는 방법은 무엇입니까? 나는 이것이 웹 물건으로는 어렵다는 것을 알고 있지만 그것을 할 수 있습니까? (여전히 작은 질문에 대해서는 +1). 어쩌면 코드에서 사이트 응답을 하드 코딩하여 코드를 오프라인에서 실행할 수 있습니까? BTW 'app'은 어디에 정의되어 있습니까? –

+0

"헤더가 설정되지 않았습니다", 정확히 * 무엇을 관찰하고 있으며이 헤더를 읽으려고 테스트 한 코드가 무엇이라고 생각하십니까? 코드에서받는/tool/all은 "Token"이라는 이름의 별도의 비표준 HTTP 헤더와 약간 다른 방식으로 토큰을 예상 할 수 있습니다. – Peteris

+0

@ Jean-FrançoisFabre 내가 도움이되는지 알려주려고 세부 사항을 알려 주려고했다. –

답변

0

테스트 파일에 있습니다.

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)