zoukankan      html  css  js  c++  java
  • 使用单元测试测试简单的首页

    Django鼓励以应用的形式组织代码。这样一个项目中可以放多个应用

    为待办事项清单创建第一个应用:

     manage.py startapp Lists

    会在superList文件夹中创建子文件夹Lists,并在lists中创建一些占位文件,用来保存模型,视图以及测试。

    功能测试站在用户的角度从外部测试应用,单元测试站在程序员的角度从内部测试应用。

    TDD同时使用这两种类型测试应用,工作流程:

     1.先写功能测试,从用户角度描述应用的新功能。

     2. 功能测试失败后,想办法编写代码让它通过。(或者至少让当前失败的测试通过)。此时,使用一个或多个单元测试定义希望代码实现的效果。保证为应用中的每一行代码(至少)编写一个单元测试。

     3. 单元测试失败后,编写最少量的应用代码,刚好让单元测试通过。有时要在第2步和第3步之间多次往复,直到我们觉得功能测试有一点进展为止

     4. 再次运行功能测试,看能否通过,或者有没有一点进展。这一步可能促使我们编写一些新的单元测试和代码等。

    整个过程中,功能测试站在高层驱动开发,而单元测试从底层驱动我们做些什么。

    功能测试的作用是帮助你开发具有所需功能的应用,还能保证你不会无意中破坏这些功能。单元测试的作用是帮助你编写简洁无措的代码。

    Django 有自己专用的,写unit test的类  from django.test import TestCase

    TDD x循环要从失败的测试开始,然后编写代码让其通过。

    Django中的MVC,URL 和视图函数.

    视图更像是控制器,模板才是视图。

    其主要任务是决定用户访问网站中的某个URL时做些什么。

    Django 的工作流程:

    1. 针对某个URL的HTTP请求进入

     2. Django使用一些规则决定由哪个视图函数处理这个请求 (这一步叫做 解析URL)

    3. 选中的视图函数处理请求,然后返回HTTP响应。

     先测试两件事:

    1. 能否解析网站根路径 (“/"), 将其对应到我们编写的某个视图函数上

         from django.core.urlresolvers impor resolve

         found = resolve("/") #解析 url,并将其映射到相应的视图函数上

         # TDD 目前没有响应的视图函数。根据TDD失败,在应用的视图文件中定义视图函数.

    2. 能否让视图函数返回一些HTML

        #TDD 定义的视图函数要返回 HTML 给request

    运行测试,根据TDD定义 视图函数。运行测试,发现404 error.说明 没有相应的URL映射。

    project的文件夹下的urls,py 中定义如何把URL映射到视图函数上。这个文件应用于整个网站.

       from django.conf.urls import url,patterns,include

    三种加url的例子。Django urls.py 文件中自带的事例。URL 文件中,每个url 都需要对应的视图处理函数

      Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.conf.urls import url, include
        2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))

    为视图编写测试函数:

      需要定义一个函数,向浏览器返回真正的HTML响应.

      给视图函数输入一个request, 返回response. 然后检查response.content的内容。对比response.content的内容时,主要使用 b"xxx".因为response.content是原始字节。

        from django.http import HttpRequest

      通过单元测试,一步步进行,视图函数需要返回response object

        from django.http import HttpResponse

        def home_page(request):

              return HttpResponse(xxx)

    回顾:

    创建新应用 : manage.py startapp appname

    Django 单元测试运行程序: from django.test import TestCase

    功能测试和单元测试的区别: 用户和程序员

    Django 解析URL 的方法, urls.py 文件的作用. : url(pattern,view,name)

    Django 的视图函数,请求和响应对象。 HttpRequest,HttpResponse

    如何返回简单的HTML    return HttpResponse(xxx)

    有用的命令和概念:

     python manage.py runserver

     python functional_test.py 运行功能测试

    python manage.py test 运行单元测试

    单元测试/编写代码 循环:

       a, 在终端里运行单元测试

        b,在编辑器中改动最少量的代码

        c,重复上两步

  • 相关阅读:
    多线程爬取图片(生产者-消费者模式)
    数据结构1_C---单链表的逆转
    Java基础面试知识点总结
    Java工程师必备书单
    Java工程师修炼之路(校招总结)
    Java秋招面经大合集
    我的秋招经验分享(已拿BAT头条网易滴滴)
    听说go语言越来越火了?那么请收下这一份go语言书单吧!
    2020还是AI最火?推荐几本深度学习的书籍帮你入门!
    人工智能真的有那么神秘么,推荐一份机器学习入门书单搞定它!
  • 原文地址:https://www.cnblogs.com/ahMay/p/8491329.html
Copyright © 2011-2022 走看看