Django Web 测试
Django 单元测试
模拟浏览器发起请求,测试 web 功能。只是简单记录一下怎么使用。
环境
Win10
Python2.7
Django 1.8.11
MySQL5.6
项目结构
大致如下
mysite
  mysite
    settings.py
    urls.py
    views.py
    ...
  templates
    ...
测试
创建 mysite/mysite/tests.py
也可以放在 mysite/tests.py (项目目录下)
也可以放在 myapp/tests.py (应用目录下)
# -*- coding: utf-8 -*-
from django.test import Client, TestCase
class LittleTestCase(TestCase):
    def setUp(self):
        """
        测试前置任务,创建一个客户端,可以把它看做浏览器。
        """
        self.click = Client()
    def test_http_response_status(self):
        """
        请求根目录,验证响应码
        """
        response = self.client.get('/')
        self.assertEqual(response.status_code, 200)
    def test_http_response_content(self):
        """
        请求 /get_json/,验证返回 JSON 数据。
        """
        response = self.client.get('/get_json/')
        self.assertEqual(response.content, '{"msg": "success"}')
    def test_http_response_context(self):
        """
        请求 /hello/,验证上下文,也就是渲染视图的数据
        """
        data = {
            "name": "jack"
        }
        response = self.client.get('/hello/', data)
        self.assertEqual(response.context["name"], "jack123")
执行测试
Django 找到 test*.py 文件中的 TestCase 子类,进行测试
python manage.py test
如果 tests.py 放在自己创建的目录中,如 mysite/tests/tests.py,执行测试要指定目录
python manage.py test tests/
测试结果
执行了3个测试,全部成功
需要注意,Django 默认创建一个 test_ 开头的数据库执行测试,测试结束会自动销毁这个数据库。
Creating test database for alias 'default'...
...
----------------------------------------------------------------------
Ran 3 tests in 0.533s
OK
Destroying test database for alias 'default'...
项目代码
mysite/mysite/urls.py
# -*- coding: utf-8 -*-
from django.conf.urls import include, url
from django.contrib import admin
from django.views.generic import TemplateView
from mysite import views
urlpatterns = [
    url(r'^$', views.index),
    url(r'^get_json/$', views.get_json),
    url(r'^hello/$', views.hello),
]
mysite/mysite/views.py
# -*- coding: utf-8 -*-
import json
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
    return render(request, 'mysite/index.html')
def get_json(request):
    result = {
        "msg": "success",
    }
    return HttpResponse(json.dumps(result), content_type="application/json")
def hello(request):
    name = request.GET.get('name')
    data = {
        "name": name + "123"
    }
    return render(request, 'mysite/hello.html', data)
Django Web 测试的更多相关文章
- 教程:Visual Studio 中的 Django Web 框架入门
		教程:Visual Studio 中的 Django Web 框架入门 Django 是高级 Python 框架,用于快速.安全及可扩展的 Web 开发. 本教程将在 Visual Studio 提供 ... 
- Web测试介绍2一 安全测试
		安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程. 主要安全需求包括: (i) 认证 Authent ... 
- Web测试的常用测试用例与知识
		1. Web测试中关于登录的测试 2. 搜索功能测试用例设计 3. 翻页功能测试用例 4. 输入框的测试 5. Web测试的常用的检查点 6. 用户及权限管理功能常规测试方法 7. Web测试之兼容性 ... 
- Web测试中常见分享问题
		Web测试中,由于开发通常指注重完成H5页面的逻辑功能,对各种系统.浏览器等考虑不周,同时Android端各类机型碎片化,容易产生兼容性问题,这其中以分享类型为最. 本文简单分析总结一些测试 ... 
- web测试常用的用例及知识
		1. Web测试中关于登录的测试... 1 2. 搜索功能测试用例设计... 2 3. 翻页功能测试用例... 3 4. 输入框的测试... 5 5. ... 
- web测试安全性常见问题
		web测试安全性常见问题 一. 登录账号明文传输 1. 问题一:登录账号密码或者修改密码明文传输 现象:目前物流对内的java系统基本上都是 ... 
- app测试与web测试的区别
		1.从功能测试的来讲的话,在流程和功能测试上是没有区别的.系统测试和一些细节可能会不一样. 那么我们就要先来了解,web和app的区别. web项目,一般都是b/s架构,基于浏览器的,而app则是c/ ... 
- web测试一般分为那几个阶段,哪些阶段是可以用工具实现的,都有些什么工具,哪些阶段必须要人工手动来实现呢?
		这是我在知乎上遇到的一个问题: web测试一般分为那几个阶段,哪些阶段是可以用工具实现的,都有些什么工具,哪些阶段必须要人工手动来实现呢? 首先这个提问本身就是有问题的, 没有哪个阶段是用工具实现的, ... 
- 关于web测试
		关于web测试1页面部分(1) 页面清单是否完整(是否已经将所需要的页面全部都列出来了)(2) 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是是否显示)(3) 页面在窗口中的显示是 ... 
随机推荐
- .NET 开源项目 StreamJsonRpc 介绍[下篇]
			阅读本文大概需要 9 分钟. 大家好,这是 .NET 开源项目 StreamJsonRpc 介绍的最后一篇.上篇介绍了一些预备知识,包括 JSON-RPC 协议介绍,StreamJsonRpc 是一个 ... 
- 带Boolean类型的参数的接口用postman测试时传参问题
			带Boolean类型的参数的接口用postman测试时传参问题 @Data public class ATest { private Boolean isCommit; } postman 测试时传参 ... 
- [Qt2D绘图]-02坐标系统&&抗锯齿渲染
			本节的内容可以在帮助中通过Coordinate System关键字查看. 或者入门可以看<Qt Creator 快速入门>这本书.强烈推荐入门使用.下面的内容为本书的阅读笔记,喜欢的可以买 ... 
- 使用python打造一款音乐播放器
			作者qq:64761294 编程/考试交流群:834531270 欢迎交流 核心播放模块(pygame内核) import time import pygame import easygui as g ... 
- Webpack前世今生
			在正式介绍Webpack之前,先给大家说明一下前端为什么需要模块化 1.为什么需要模块化 1.1JS原始功能 在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码 ... 
- three.js 数学方法之Vector3
			今天郭先生来说一说three.js的Vector3,该类表示的是一个三维向量(3D vector). 一个三维向量表示的是一个有顺序的.三个为一组的数字组合(标记为x.y和z),可被用来表示很多事物, ... 
- 关于简单的数据双向绑定原理,defineProperty 和Proxy演示
			双向绑定,也就是说js中的数据传到页面,页面中的内容到js,实现同步更新,简单的演示可以直接复制下放HTML代码运行. 在这个例子中,我们使用defineProperty ,Object.define ... 
- BUUCTF-web EasySearch (服务端包含注入ssi)
			一打开就是登录页面 存在index.php.swp...(反正我是没有扫出来,题目没给提示),分析一波源码 <?php ob_start(); function get_hash(){ $cha ... 
- 今天上午完成了devicescan,发送了rar包到yzx3233@sina.com
			今天上午完成了devicescan,发送了rar包到yzx3233@sina.com 可以正常扫描和输入了. 还有一个最后的问题,就是选择退出后,程序还在后台 
- 郭神的关于git软件和http的文章
			https://blog.csdn.net/guolin_blog/article/details/17482095 
