2017-06-11 3 views
0

Dies ist mein Code zum Testen Trello API:Python Unittest PUT-Methode - immer Fehler für Statuscode

import string 
import random 
import requests 
from settings import * 

nonce = lambda x: ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10 if not x else x)) 

def get_board_detals(board_id): 
    url = "https://trello.com/1/boards/" + board_id 
    params = {"key":key, 
      "token":token} 
    return requests.get(url=url, params=params) 

def post_board_name(board_name): 
    url = "https://api.trello.com/1/boards" 
    params = {"key": key, 
      "token": token, 
      "name": board_name} 
    return requests.post(url=url, params=params) 

def put_new_board_name(board_id): 
    url = "https://api.trello.com/1/boards" + board_id 
    params = {"key": key, 
       "token": token} 
    return requests.put(url=url, params=params) 

und Code für Unittest:

import unittest 
from board_details import * 

class BoardDetails(unittest.TestCase): 
    def setUp(self): 
     self.name = nonce(10) 

    def test_put_new_name(self): 
     result_post = post_board_name(self.name) 
     board_id = result_post.json()['id'] 

     result_put = put_new_board_name(board_id) 
     self.assertEqual(result_put.status_code, 200) 
     self.assertIn(result_put.json()['name'], self.name) 


if __name__ == '__main__': 
    unittest.main() 

Wenn ich den Code ausführen, erhalte ich eine Fehler: AssertionError: 404 != 200. Ich weiß nicht, warum es so ist, kann jemand darauf hinweisen, was der Grund für meinen Fehler ist?

+1

Die URL, die Sie zugreifen, 404 Rückkehr (nicht gefunden) wo Sie 200 OK erwartet haben. Überprüfen Sie diese URL über eine andere Methode. – paisanco

+0

Ja, ich weiß was es bedeutet. Entschuldigung, ich habe meine Frage falsch formuliert. Ich denke, es gibt einen Fehler entweder in der Funktion oder in der Methode. Ich weiß nicht wo. – Mina

+1

OK keine Sorgen Sie sind sicher, dass die URL zum Zeitpunkt des Anrufs korrekt erstellt wurde? . – paisanco

Antwort

0

Ich habe es so und es scheint gut zu funktionieren:

Funktion:

def put_new_board_name(board_id, board_name): 
    url = "https://api.trello.com/1/boards/" + board_id +"/name" 
    params = {"key": key, 
       "token": token, 
       "value" : board_name} 
    return requests.put(url=url, params=params) 

und Methode:

def test_put_new_name(self): 
    result_post = post_board_name(self.name) 
    board_id = result_post.json()['id'] 

    result_put = put_new_board_name(board_id, board_name=self.name) 
    self.assertEqual(result_put.status_code, 200) 
    self.assertIn(result_put.json()['name'], self.name)