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) 页面在窗口中的显示是 ...
随机推荐
- L-BFGS算法详解(逻辑回归的默认优化算法)
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- angular浏览器兼容性问题解决方案
问题:edge浏览器下,固定列的边框消失 原因:ng-zorro-antd表格组件使用nzLeft和nzRight指令固定的表格列,这两个指令的实现css3中的标签: position: -webki ...
- 图文详解在Windows系统中安装JDK
本文以在Windows10中安装JDK8为例进行安装,其他系统和版本都是大同小异的. 下载 进入Oracle官方网站的下载页面:https://www.oracle.com/technetwork/j ...
- jquery文件表单上传
1. 引入jquery文件 <script src="js/jquery-2.1.1.min.js"></script> 2. 创建form表单,如下: ...
- vue : 无法加载文件 C:\Users\ui61895076\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
说白了就是这个编辑器不能用罢了 执行以下代码 1.鼠标右击以管理员身份运行vscode; 2. 执行:get-ExecutionPolicy,显示Restricted,表示状态是禁止的; 3. 执行: ...
- 题解 洛谷 P5443 【[APIO2019]桥梁】
考虑若只有查询操作,那么就可以构造\(Kruskal\)重构树,然后在线询问了,也可以更简单的把询问离线,把询问和边都按权值从大到小排序,然后双指针依次加入对于当前询问合法的边,用并查集维护每个点的答 ...
- java计算下一个整5分钟时间点
需求背景 我的需求是获取当前时间之后的下一个"整5分钟时间点". 首先,那么何为"整5分钟时间点"? 满足以下两个条件的时间: 分钟数等于以下时间中的一个,且秒 ...
- Java应用服务器之tomcat session server msm搭建配置
在上一篇博客中,我们介绍了tomcat自带的cluster组件配置session replication cluster,回顾请参考https://www.cnblogs.com/qiuhom-187 ...
- Redis(一)简介及安装、测试
一.Redis简介: 关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的数据库.从性能上而言, ...
- MyBatis--动态插入多条数据
MySQL支持的一种插入多行数据的INSERT语句写法是 INSERT INTO 表名 (字段名1,字段名2,字段名3) VALUES (值1,值2,值3,...),(值1,值2,值3,...)... ...