我正在尝试为API编写测试。我遇到了一些用户模型方法的问题。这些方法都能在开发和生产环境中工作,但测试不能
以下是测试:
def test_delete_user(self):
USER_DELETED = 1
self.u = self.setup()
result = User.delete_user(self.u, self.u.pk)
# response
self.assertEqual(result, USER_DELETED)
# functionality
self.assertIsNone(self.u)
print(self.u)
当我运行这个测试时,返回值USER_DELETED
是正确的,但是用户对象实际上没有被删除
self.setup()
返回一个创建的用户。如果需要,我可以发布它,但是安装和拆卸都可以与UserTest类中的各种其他测试一起工作
以下是正在测试的模型方法:
@staticmethod
def delete_user(requesting_user, user_id):
# static variables
USER_DELETED = 1
NOT_AUTHORIZED = 0
NO_USER = -1
user_to_be_deleted = User.get_user_from_user_id(user_id)
if user_to_be_deleted == NO_USER:
return NO_USER
# check for authorization to delete
if requesting_user != user_to_be_deleted:
return NOT_AUTHORIZED
user_to_be_deleted.delete()
return USER_DELETED
我还尝试使用安装程序创建用户,然后调用self.u.delete()
而不是我使用的自定义方法。这给出了相同的结果:AssertionError: <User: test_user> is not None
有人能解释一下我做错了什么吗
谢谢
我认为您可以使用Asserraies来测试删除功能。正如Thomas提到的,您应该
self.u.refresh_from_db
,但是由于对象被删除,这将引发DoesNotExists
,因此正确的测试方法如下相关问题 更多 >
编程相关推荐