最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Django入门指南10-主页的请求测试

    正文概述    2020-04-15   395

    注:本文为 《一个完整的Django入门指南》系列教程(中文版)第10节,你可以查看该教程的完整目录。

    测试主页

    测试将是一个反复出现的主题,我们将在整个教程系列中一起探讨不同的概念和策略。

    Django入门指南10-主页的请求测试

    我们来开始写第一个测试。现在,我们将在boards应用程序内的tests.py文件中操作

    boards/tests.py
    from django.core.urlresolvers import reverse
    from django.test import TestCase
    class HomeTests(TestCase):
        def test_home_view_status_code(self):
            url = reverse('home')
            response = self.client.get(url)
            self.assertEquals(response.status_code, 200)

    这是一个非常简单但非常有用的测试用例,我们测试的是请求该URL后返回的响应状态码。状态码200意味着成功。

    请求一下主页后,我们可以在控制台中看到响应的状态代码:

    Django入门指南10-主页的请求测试

    如果出现未捕获的异常,语法错误或其他任何情况,Django会返回状态代码500,这意味着内部服务器错误。现在,想象我们的应用程序有100个视图。如果我们为所有视图编写这个简单的测试,只需一个命令,我们就能够测试所有视图是否返回成功代码,因此用户在任何地方都看不到任何错误消息。如果没有自动化测试,我们需要逐一检查每个页面。

    执行Django的测试套件:

    python manage.py test
    Creating test database for alias 'default'...
    System check identified no issues (0 silenced).
    .
    ----------------------------------------------------------------------
    Ran 1 test in 0.041s
    OK
    Destroying test database for alias 'default'...

    现在我们可以测试Django是否在请求的URL的时候返回了正确的视图函数。这也是一个有用的测试,因为随着开发的进展,您会发现urls.py模块可能变得非常庞大而复杂。URL conf 全部是关于解析正则表达式的。有些情况下有一个非常宽容的URL(译注:本来不应该匹配的,却因为正则表达式写的过于宽泛而错误的匹配了),所以Django最终可能返回错误的视图函数。

    我们可以这样做:

    boards/tests.py
    from django.core.urlresolvers import reverse
    from django.urls import resolve
    from django.test import TestCase
    from .views import home
    class HomeTests(TestCase):
        def test_home_view_status_code(self):
            url = reverse('home')
            response = self.client.get(url)
            self.assertEquals(response.status_code, 200)
    def test_home_url_resolves_home_view(self):
            view = resolve('/')
            self.assertEquals(view.func, home)

    在第二个测试中,我们使用了resolve函数。Django使用它来将浏览器发起请求的URL与urls.py模块中列出的URL进行匹配。该测试用于确定URL / 返回 home 视图。

    再次测试:

    python manage.py test
    ```sh
    Creating test database for alias 'default'...
    System check identified no issues (0 silenced).
    ..
    ----------------------------------------------------------------------
    Ran 2 tests in 0.027s
    OK
    Destroying test database for alias 'default'...

    要查看有关测试执行时更详细的信息,可将verbosity的级别设置得更高一点:

    python manage.py test --verbosity=2
    Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
    Operations to perform:
      Synchronize unmigrated apps: messages, staticfiles
      Apply all migrations: admin, auth, boards, contenttypes, sessions
    Synchronizing apps without migrations:
      Creating tables...
        Running deferred SQL...
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0001_initial... OK
      Applying admin.0002_logentry_remove_auto_add... OK
      Applying contenttypes.0002_remove_content_type_name... OK
      Applying auth.0002_alter_permission_name_max_length... OK
      Applying auth.0003_alter_user_email_max_length... OK
      Applying auth.0004_alter_user_username_opts... OK
      Applying auth.0005_alter_user_last_login_null... OK
      Applying auth.0006_require_contenttypes_0002... OK
      Applying auth.0007_alter_validators_add_error_messages... OK
      Applying auth.0008_alter_user_username_max_length... OK
      Applying boards.0001_initial... OK
      Applying sessions.0001_initial... OK
    System check identified no issues (0 silenced).
    test_home_url_resolves_home_view (boards.tests.HomeTests) ... ok
    test_home_view_status_code (boards.tests.HomeTests) ... ok
    ----------------------------------------------------------------------
    Ran 2 tests in 0.017s
    OK
    Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

    Verbosity决定了将要打印到控制台的通知和调试信息量; 0是无输出,1是正常输出,2是详细输出。

    下一节:Django入门指南11-静态文件的设置


    起源地下载网 » Django入门指南10-主页的请求测试

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元