当前位置: 首页 > 面试题库 >

如何在Django中模拟用户和请求

呼延骏俊
2023-03-14
问题内容

我有与请求对象或用户对象进行交互的Django代码。例如:

foo_model_instance = models.get_or_create_foo_from_user(request.user)

如果要使用django python
shell进行测试或在单元测试中进行测试,您将在其中传递什么?这里只是一个User对象即可,但是对模拟请求对象的需求也经常出现。

对于外壳或单元测试:

  • 您如何嘲笑用户?
  • 您如何模拟请求?

问题答案:

对于请求,我将使用Django随附的RequestFactory。

from django.test.client import RequestFactory
rf = RequestFactory()
get_request = rf.get('/hello/')
post_request = rf.post('/submit/', {'foo': 'bar'})

对于用户,我将按照@ozan的建议使用django.contrib.auth.models.User,并可能与factory
boy一起使用
以提高速度(对于factory
boy,您可以选择不保存到DB)



 类似资料:
  • 在我的views.py中,我有一个函数,它每次使用不同的响应来调用各种requests.get() 在我的测试类中,我想做这样的事情,但无法计算出确切的方法调用 步骤1: 验证响应包含“a response”、“b response”、“c response” 如何完成步骤1(模拟请求模块)?

  • 问题内容: 在执行ModelForm时,我想根据当前用户是否为超级用户执行不同类型的验证检查。如何访问当前的请求用户? 问题答案: 您可以将用户对象作为额外的参数传递给表单构造函数。 例如 构造函数将如下所示: 然后根据需要在clean_XX表单中使用user

  • 我在JUnit中使用Mockito,并且我有一个使用RestTemboard向微服务发出请求的方法。 此方法返回一个JSON对象,该对象将在TokenRequestorPayload类中反序列化。 当我执行单元测试时,它们会失败,因为mock不起作用,我得到了一个org.springframework.web.client.ResourceAccessExcure。我怎么能嘲笑我的RestTem板

  • 问题内容: 我正在使用Google App Engine框架编写带有模拟对象的测试用例。这在此处记录。我已经使用模拟数据库()使数据存储区测试正常运行,这使我的测试用例可以在快速,新鲜的数据库上运行,并针对每个测试用例进行了重新初始化。现在,我要测试取决于当前用户的功能。 还有另一个名为的测试平台服务,可以激活该服务以获取“伪造”用户服务。不幸的是,这似乎没有任何文档。我正在像这样激活和使用它:

  • 似乎有很多不同的方法可以做到这一点,但我试图只使用sinon,sinon-test,chai/mocha,axios,httpmock模块。我无法成功模拟使用axios进行的GET调用。我希望能够模拟来自axios调用的响应,这样单元测试实际上就不必发出外部API请求。 我尝试过通过创建沙箱来建立一个基本的单元测试,并使用sinon stub来建立一个GET调用并指定预期的响应。我不熟悉JavaS

  • 问题内容: 我有一个Django应用。当以管理员用户身份登录时,我希望能够在URL中传递一个秘密参数,并使整个网站的行为就像我是另一个用户一样。 假设我有显示当前登录用户个人资料的URL 。我希望能够做类似的事情,并使基础视图相信我实际上是ID 123的用户(因此呈现 该 用户的个人资料)。 我为什么要那样? 仅仅因为重现仅出现在单个用户帐户中的某些错误要容易得多。 我的问题: 实现这样的最简单的