簡體   English   中英

python AssertionError中的unittest assertionError:<Response [200]> != 200

[英]unittest assertionError in python AssertionError: <Response [200]> != 200

我正在用 unittest 和 requests 模塊編寫 python 測試,但得到
AssertionError: <Response [200]> != 200

測試在兩個函數中設置,test_get 和 test_post。 測試運行程序從 Tests 類開始,其中的問題在 test2 中。 我也試圖斷言: <Response [200]>也是。 但是卻收到此錯誤:

<Response [200]> != <Response [200]>

Expected :<Response [200]>
Actual   :<Response [200]>

為此,我使用了 httpbin 和 pycharm。

import requests
import unittest

# Test 1: Assert get data body
get_url = 'https://httpbin.org/get'
test_get = \
    {
        'args': {},
        'headers': {'Accept': '*/*',
                    'Accept-Encoding': 'gzip, deflate',
                    'Host': 'httpbin.org',
                    'User-Agent': 'python-requests/2.21.0'},
        'origin': '94.255.130.105, 94.255.130.105',
        'url': 'https://httpbin.org/get'
    }

def get_httpbin(get_url):
    r = requests.get(get_url).json()
    return r

# Test 2: Assert post is OK 200
post_url = 'https://httpbin.org/post'
test_post = \
    {
        'sender': 'Alice',
        'receiver': 'Bob',
        'message': 'We did it!'
    }

def post_httpbin(post_url):
    r = requests.post(post_url, test_post)
    return r

# Test Runner
class Tests(unittest.TestCase):
    def test1(self):
        self.assertEqual(get_httpbin(get_url), test_get)

    def test2(self):
        self.assertEqual(post_httpbin(post_url), 200)

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

現在你正在比較r ,它給你<Response [200]>與一個整數,因此斷言錯誤。 相反,您可能想要斷言r.status_code ,它為您提供狀態代碼作為200的整數。

def test2(self):
    self.assertEqual(post_httpbin(post_url).status_code, 200)

您正在將響應對象與數字進行比較。 他們不是平等的。

您打算將來自響應對象的狀態代碼與一個數字進行比較。 嘗試這個:

def test2(self):
    self.assertEqual(post_httpbin(post_url).status_code, 200)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM