使用单元测试测试简单的首页

Posted AhMay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用单元测试测试简单的首页相关的知识,希望对你有一定的参考价值。

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,重复上两步

以上是关于使用单元测试测试简单的首页的主要内容,如果未能解决你的问题,请参考以下文章

Flask 蓝图&单元测试

第二次作业—单元测试的简单实践

单元测试及框架简介 --junitjmockmockitopowermock的简单使用

Android 单元测试学习计划

DAO的单元测试

Python项目中的单元测试