使用pytest测试Django REST Framework API时状态码断言异常
问题原因与解决方法
问题出在你用is运算符比较HTTP状态码的值,而非==。
- Python里
is用来判断两个对象是否指向同一内存地址(身份相同),==才是判断值是否相等。 - 虽然Python对-5到256的小整数有缓存,但
response.status_code返回的整数可能因动态生成等原因,没有复用缓存实例,导致值同为400但内存地址不同,触发is断言失败。
修复后的测试代码:
def test_client_gets_invalid_when_submitting_invlaid_data(self): client = APIClient() response = client.post(path="/user/register/", data={}) assert response.status_code == 400 # 替换is为==
总结:比较数值、字符串等值时优先用==;仅在判断对象是否为同一实例(比如is None)时使用is。
内容的提问来源于stack exchange,提问作者liam
相关产品推荐
相关产品推荐

