Django 测试客户端

self.client.get(url)  测试客户端是Django中TestCase类的一个属性名.

至此已经在网站中可以创建一个清单了。

那么,现在是可以在unit test中测试新建的清单了

为新建清单添加了一个视图函数,并映射给了url ‘^/Lists/new$'. 在哪里使用它呢? 在首页的新建清单 form的Action中指定这个url。

目前的实现是:

1. get 首页,打开首页。能看到 输入待办事项的清单。

2. post 首页,可以创建一个list.并在list中显示该待办事项。打开的是新建list的 url

3. post list 页面。能看到新建的待办事项

目前的问题是:

1. 目前只能有一个list

2. 一个list中显示所有的待办事项,不能隔离。

解决问题:

处理隔离问题,必须修改模型,新建一个 List 类。并让类和item 关联起来. 需要用到 model的知识。

List是单独的自己: 在url中使用正则式,加入一个捕获组 (.+) ,捕获到的文本会作为参输传入视图

Item 每个Item应该存在某个List中。

捕获组  (.+)不仅可以捕获 /(.+)/ 也可以捕获 /((.+)/new_item ..... 所以 写url时,要避免使用的正则式,匹配太广.

response = self.client.get('/Lists/%id/' % (correct_list.id,))

self.assertEqual(response.context['list'],correct_list)  # response.context 表示要传入render函数的上下文。 Django客户端把上下文附在response对象上,方便测试.

template 中:

{% for new_item_text in list.item_set.all %}  # .item_set 叫做反向查询。是Django提供的非常有用的ORM功能。可以在其他表中查询某个对象的相关纪录。

所以在template的from中。可以传入一个modle实例。然后根据这个实例找相关的其他对象实例:

<form method="POST" action='/Lists/{{list.id}}/new'>
            <input name="item_text" id="id_new_item" placeholder="Enter a to-do item" />
            {% csrf_token %}
        </form>
        <table id="id_list_table">
            {% for new_item_text in list.item_set.all %}
                <tr><td>{{ forloop.counter}}: {{new_item_text.text}}</td></tr>
            {% endfor %}
        </table>

使用Django 测试客户端一起测试视图,模板和URL的更多相关文章

  1. 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组

    真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...

  2. django创建app、在视图函数及url中使用参数、url命名、通过redirect实现网页路径跳转

    app用来实现一个独立的功能,视图一般都写在app的view.py中,并且视图的第一个参数永远是request,视图的返回值必须是HttpResponseBase对象或子类的对象. 创建一个app:f ...

  3. Django学习系列8:django测试客户端

    """向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test import TestCase from ...

  4. Django 1.6 的测试驱动开发

    http://www.oschina.net/translate/django-1-6-test-driven-development 测试驱动开发(TDD)是一个迭代的开发周期,强调编写实际代码之前 ...

  5. 启用WCF测试客户端的相关技巧

    在Visual Studio之外打开WCF测试客户端有两种方法:第一种方法是到其所在路径(Visual Studio安装路径\Common7\IDE\WcfTestClient.exe)双击打开.第二 ...

  6. 《LDAP服务器的配置与客户端的测试》RHEL6——第一篇 运维工程师必考

    ldap这种原始的服务器搭建起来比较复杂,同时它也是CE必考的(客户端的搭建). 服务器端的配置: 1.安装openldap-servers软件包 2.查看ldap模板文件的存放位置: 3.拷贝lda ...

  7. Django基础(路由、视图、模板)

    目录导航 Django 路由控制 Django 视图层 Django 模版层 Django 路由控制 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用 ...

  8. 使用WCF测试客户端 z

    http://blog.csdn.net/u013036274/article/details/50570989 [是什么] WCF测试客户端(WCF Test Client)是一个用来测试WCF服务 ...

  9. Django系列(二):Django的路由层,视图层和模板层

    1.Django的路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Django,对于客户端发来的某 ...

随机推荐

  1. Spring cloud的各类组件

    Spring cloud 的各类组件 1.注册中心 eureka 2.ribbon 3.feign 4.hystirx 断路器 5.高速缓存器 redis 6.断路器Dashboard监控仪表盘

  2. 利用Python进行数据分析_Pandas_数据结构

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 首先,需要导入pandas库的Series和DataFrame In [21] ...

  3. spring中使用动态代理(AOP)

    spring是整合了BGLIB和JDK两种动态代理 示例:使用CGLIB代理 public class MyCar { private String color = "blue"; ...

  4. Hinton胶囊网络后最新研究:用“在线蒸馏”训练大规模分布式神经网络

    Hinton胶囊网络后最新研究:用“在线蒸馏”训练大规模分布式神经网络 朱晓霞发表于目标检测和深度学习订阅 457 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等价格 立即抢购 ...

  5. Markdown中有序列表和无序列表

    最近有用户问我,在简书写 Markdown, 一条有序列表 item 之后接一条无序列表 item,为什么 parse 的结果,第二个 item 依旧是作为有序列表的第二项显示,带有有序列表的列表符号 ...

  6. LeetCode 1047. Remove All Adjacent Duplicates In String

    1047. Remove All Adjacent Duplicates In String(删除字符串中的所有相邻重复项) 链接:https://leetcode-cn.com/problems/r ...

  7. opencv中自适应阈值函数的实现(c++)

    根据<面向飞机蒙皮接缝的线结构光检测技术研究_张卡>论文中的原理,编写了自适应阈值函数 原理: //计算灰度最大最小值 void MaxGrayValue(Mat image,int &a ...

  8. Python练习_数据类型_day5

    1. 1.作业 1,有如下变量(tu是个元祖),请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2&qu ...

  9. spring.factories配置文件的工厂模式

    在springboot的各个依赖包下,我们经常看到META-INF/spring.factories这个文件.spring.factories文件的内容基本上都是这样的格式: # Initialize ...

  10. 如何在 vue 2.0+ 中引入全局的stylus文件,且能正常

    由于stylus在引用时,不能像一般的css文件直接在main.js中引用,就算引用了也会只能使用转换后的css,不能使用里面的函数,方法等,原因可能是:在这里引入会被直接编译成css,不能在别的模板 ...