pytest中的django响应代码错误

bn31dyow  于 2023-01-31  发布在  Go
关注(0)|答案(2)|浏览(116)

我正在使用pytest来测试我的django rest framework API,在下面的测试中得到了一个错误:

def test_client_gets_invalid_when_submitting_invlaid_data(self):
    client = APIClient()
    response = client.post(path="/user/register/", data={})
    assert response.status_code is 400

pytest中的追溯如下:

>       assert response.status_code is 400
E       assert 400 is 400
E        +  where 400 = <Response status_code=400, "application/json">.status_code

core\tests\test_views.py:26: AssertionError

我不明白这个错误怎么会发生,当400是字面上等于400?

pjngdqdw

pjngdqdw1#

因此,关键字is测试内存中的同一性,而==测试值。
因此,解决方案只是将is更改为==
https://www.geeksforgeeks.org/python-object-comparison-is-vs/

scyqe7ek

scyqe7ek2#

is运算符比较两个对象的标识,而不是它们的值。在本例中,response.status_code是一个int对象,400也是一个int对象,但它们是int对象的不同示例。
您应该改用==运算符来比较它们的值。

def test_client_gets_invalid_when_submitting_invlaid_data(self):
    client = APIClient()
    response = client.post(path="/user/register/", data={})
    assert response.status_code == 400

相关问题