首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试Django视图函数

测试Django视图函数
EN

Stack Overflow用户
提问于 2020-01-07 03:34:50
回答 2查看 79关注 0票数 1

我目前正在尝试为我在views.py中编写的函数创建单元测试。然而,我一直无法找到正确的方法来这样做。以下是我目前所掌握的示例:

views.py:

代码语言:javascript
运行
复制
class SalesListView(LoginRequiredMixin, TemplateView):
    def get_month(self):
        if self.request.GET.get('month'):
            d = datetime.strptime(self.request.GET.get('month'), '%Y-%m')
        else:
            d = datetime.today()
        return d

我尝试这样测试它:

tests.py:

代码语言:javascript
运行
复制
class ViewFunctionsTests(TestCase):
    def test_saleslistview(self):
        self.request = Mock(session={'month': '2019-11'}, method='GET')
        view = SalesListView()
        self.assertEqual(view.get_month(), '2019-11')

但是,这将返回一个声明:AttributeError: 'SalesListView' object has no attribute 'request'的AttributeError

有没有人对测试视图函数的正确方法有什么建议?提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-07 04:04:01

来自Django文档:

代码语言:javascript
运行
复制
from django.test import Client
c = Client()
response = c.post('/login/', {'username': 'john', 'password': 'smith'})
response.status_code
200
response = c.get('/customer/details/')
response.content

有关更多细节,请访问:https://docs.djangoproject.com/en/3.0/topics/testing/tools/

票数 2
EN

Stack Overflow用户

发布于 2020-01-08 06:08:11

通过使用RequestFactory库,我找到了我正在寻找的解决方案。

代码语言:javascript
运行
复制
class ViewFunctionsTests(TestCase):
    def test_saleslistview(self):
        request = RequestFactory().get('/sales/sales_dashboard/?month=2019-11')
        view = SalesListView()
        view.setup(request)
        self.assertEqual(view.get_month(), datetime.datetime(2019, 11, 1, 0, 0))

请求需要您的模板的路径。希望这对你有帮助,如果你遇到和我一样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59617927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档