当前位置: 56net亚洲必嬴 > 编程 > 正文

www.56.net老师上课博客目录

时间:2019-10-24 18:29来源:编程
 bootstrap cdn在线地址 对Python的Django框架中的项目进展单元测量检验的方法,pythondjango  Python中的单元测量试验 大家先来回看一下Python中的单元测量试验方法。 下边是几个 Python的单元测

 bootstrap cdn在线地址

对Python的Django框架中的项目进展单元测量检验的方法,pythondjango

 Python中的单元测量试验

大家先来回看一下Python中的单元测量试验方法。
下边是几个 Python的单元测量检验简单的例证:

比方我们付出一个除法的作用,有的同学大概以为很简短,代码是如此的:

def division_funtion(x, y):
  return x / y

唯独这么写毕竟对如故不对啊,有个别同学能够在代码上面那样测量试验:

def division_funtion(x, y):
  return x / y


if __name__ == '__main__':
  print division_funtion(2, 1)
  print division_funtion(2, 4)
  print division_funtion(8, 3)

不过这么运维后获得的结果,本身每便都得算一下去审查批准二次,非常不平价,Python中有 unittest 模块,能够很实惠地张开测验,实际情况能够文章最后的链接,看官方网站文书档案的详细介绍。

下边是一个大约的示范:

import unittest


def division_funtion(x, y):
  return x / y


class TestDivision(unittest.TestCase):
  def test_int(self):
    self.assertEqual(division_funtion(9, 3), 3)

  def test_int2(self):
    self.assertEqual(division_funtion(9, 4), 2.25)

  def test_float(self):
    self.assertEqual(division_funtion(4.2, 3), 1.4)


if __name__ == '__main__':
  unittest.main()

自家总结地写了四个测验示例(不分明周详,只是示范,举个例子未有思虑除数是0的气象),运营后开掘:

F.F
======================================================================
FAIL: test_float (__main__.TestDivision)
----------------------------------------------------------------------
Traceback (most recent call last):
 File "/Users/tu/YunPan/mydivision.py", line 16, in test_float
  self.assertEqual(division_funtion(4.2, 3), 1.4)
AssertionError: 1.4000000000000001 != 1.4

======================================================================
FAIL: test_int2 (__main__.TestDivision)
----------------------------------------------------------------------
Traceback (most recent call last):
 File "/Users/tu/YunPan/1.py", line 13, in test_int2
  self.assertEqual(division_funtion(9, 4), 2.25)
AssertionError: 2 != 2.25

----------------------------------------------------------------------
Ran 3 tests in 0.001s

FAILED (failures=2)

汗!开掘了没,竟然多个都未果了,测量检验开掘:

4.2除以3 特别 1.4000000000000001 不等于期待值 1.4

9除以4等于2,不对等期待的 2.25

下边大家正是要修复这几个难题,再一次运营测量试验,直到运维不报错结束。

诸如依照实际处境,借使大家只必要保留到小数点后6位,能够如此改:

def division_funtion(x, y):
  return round(float(x) / y, 6)

再度运转就不报错了:

...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

 
OK

Django中的单元测量试验

尽快举行单元测验(UnitTest)是相比较好的做法,极端的景观竟然重申“测验先行”。今后我们已经有了第二个model类和Form类,是时候开头写测量检验代码了。

Django帮助python的单元测量试验(unit test)和文件测量检验(doc test),大家那边最首要研商单元测量检验的不二法门。这里不对单元测量检验的申辩做过多的演讲,即便你曾经深谙了下列概念:test suite, test case, test/test action,  test data, assert等等。

在单元测量试验方面,Django承接python的unittest.TestCase达成了和煦的django.test.TestCase,编写测量检验用 例日常从今未来间起头。测量试验代码常常位于app的tests.py文件中(也足以在models.py中编辑,不过自个儿不建议那样做)。在Django生成的 depotapp中,已经满含了这么些文件,并且当中包含了多少个测量检验用例的样例:

depot/depotapp/tests.py

from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.assertEqual(1 + 1, 2)

你能够有两种方式运维单元测验:

  • python manage.py test:试行全部的测量试验用例
  • python manage.py test app_name, 推行该app的具备测量试验用例
  • python manage.py test app_name.case_name: 推行钦点的测试用例

用第二种办法施行上边提供的样例,结果如下:

$ python manage.py test depotapp.SimpleTest

Creating test database for alias 'default'...
.
----------------------------------------------------------------------
Ran 1 test in 0.012s

OK
Destroying test database for alias 'default'...

您或者会珍视到,输出消息中富含了创立和删除数据库的操作。为了制止测量检验数据变成的熏陶,测量检验进程会使用八个独自的数据库,关于怎么着钦赐测量试验数据库 的内情,请查阅Django文书档案。在大家的例子中,由于应用sqlite数据库,Django将默许使用内部存储器数据库来扩充测量检验。

上面就让我们来编排测量试验用例。在《Agile Web Development with Rails 4th》中,7.2节,最后促成的ProductTest代码如下:

class ProductTest < ActiveSupport::TestCase
test "product attributes must not be empty"do
product = Product.new
assert product.invalid?
assert product.errors[:title].any?
assert product.errors[:description].any?
assert product.errors[:price].any?
assert product.errors[:image_url].any?
end
test "product price must be positive"do
product = Product.new(:title => "My Book Title",
:description => "yyy",
:image_url => "zzz.jpg")
product.price = -1
assert product.invalid?
assert_equal "must be greater than or equal to 0.01",
product.errors[:price].join('; ')
product.price = 0
assert product.invalid?
assert_equal "must be greater than or equal to 0.01",
product.errors[:price].join('; ')
product.price = 1
assert product.valid?
end
def new_product(image_url)
Product.new(:title => "My Book Title",
:description => "yyy",
:price => 1,
:image_url => image_url)
end
test "image url"do
ok = %w{ fred.gif fred.jpg fred.png FRED.JPG FRED.Jpg
http://a.b.c/x/y/z/fred.gif }
bad = %w{ fred.doc fred.gif/more fred.gif.more }
ok.eachdo |name|
assert new_product(name).valid?, "#{name} shouldn't be invalid"
end
bad.eachdo |name|
assert new_product(name).invalid?, "#{name} shouldn't be valid"
end
end
test "product is not valid without a unique title"do
product = Product.new(:title => products(:ruby).title,
:description => "yyy",
:price => 1,
:image_url => "fred.gif")
assert !product.save
assert_equal "has already been taken", product.errors[:title].join('; ')
end
test "product is not valid without a unique title - i18n"do
product = Product.new(:title => products(:ruby).title,
:description => "yyy",
:price => 1,
:image_url => "fred.gif")
assert !product.save
assert_equal I18n.translate('activerecord.errors.messages.taken'),
product.errors[:title].join('; ')
end
end

对Product测量试验的原委囊括:

1.title,description,price,image_url不能够为空;

  1. price必须超过零;

  2. image_url必得以jpg,png,jpg结尾,並且对大小写不灵活;

  3. titile必需唯生龙活虎;

让大家在Django中实行这么些测量检验。由于ProductForm包涵了模型校验和表单校验准则,使用ProductForm可以比较轻松的达成上述测量试验:

depot/depotapp/tests.py

#/usr/bin/python
#coding: utf8
"""
This file demonstrates writing tests using the unittest module. These will pass
when you run "manage.py test".
Replace this with more appropriate tests for your application.
"""
from django.test import TestCase
from forms import ProductForm
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.assertEqual(1 + 1, 2)
class ProductTest(TestCase):
def setUp(self):
self.product = {
'title':'My Book Title',
'description':'yyy',
'image_url':'http://google.com/logo.png',
'price':1
}
f = ProductForm(self.product)
f.save()
self.product['title'] = 'My Another Book Title'
#### title,description,price,image_url不能为空
def test_attrs_cannot_empty(self):
f = ProductForm({})
self.assertFalse(f.is_valid())
self.assertTrue(f['title'].errors)
self.assertTrue(f['description'].errors)
self.assertTrue(f['price'].errors)
self.assertTrue(f['image_url'].errors)
####  price必须大于零
def test_price_positive(self):
f = ProductForm(self.product)
self.assertTrue(f.is_valid())
self.product['price'] = 0
f = ProductForm(self.product)
self.assertFalse(f.is_valid())
self.product['price'] = -1
f = ProductForm(self.product)
self.assertFalse(f.is_valid())
self.product['price'] = 1
####  image_url必须以jpg,png,jpg结尾,并且对大小写不敏感;
def test_imgae_url_endwiths(self):
url_base = 'http://google.com/'
oks = ('fred.gif', 'fred.jpg', 'fred.png', 'FRED.JPG', 'FRED.Jpg')
bads = ('fred.doc', 'fred.gif/more', 'fred.gif.more')
for endwith in oks:
self.product['image_url'] = url_base+endwith
f = ProductForm(self.product)
self.assertTrue(f.is_valid(),msg='error when image_url endwith '+endwith)
for endwith in bads:
self.product['image_url'] = url_base+endwith
f = ProductForm(self.product)
self.assertFalse(f.is_valid(),msg='error when image_url endwith '+endwith)
self.product['image_url'] = 'http://google.com/logo.png'
###  titile必须唯一
def test_title_unique(self):
self.product['title'] = 'My Book Title'
f = ProductForm(self.product)
self.assertFalse(f.is_valid())
self.product['title'] = 'My Another Book Title'

下一场运营 python manage.py test depotapp.ProductTest。仿佛预想的那样,测量试验未有经过:

Creating test database for alias 'default'...
.F..
======================================================================
FAIL: test_imgae_url_endwiths (depot.depotapp.tests.ProductTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/holbrook/Documents/Dropbox/depot/../depot/depotapp/tests.py", line 65, in test_imgae_url_endwiths
self.assertTrue(f.is_valid(),msg='error when image_url endwith '+endwith)
AssertionError: False is not True : error when image_url endwith FRED.JPG

----------------------------------------------------------------------
Ran 4 tests in 0.055s

FAILED (failures=1)
Destroying test database for alias 'default'...

因为大家事先并不曾假造到image_url的图纸扩大名大概会大写。校订ProductForm的有关部分如下:

def clean_image_url(self):
url = self.cleaned_data['image_url']
ifnot endsWith(url.lower(), '.jpg', '.png', '.gif'):
raise forms.ValidationError('图片格式必须为jpg、png或gif')
return url

接下来再运营测量检验:

$ python manage.py test depotapp.ProductTest

Creating test database for alias 'default'...
....
----------------------------------------------------------------------
Ran 4 tests in 0.060s

OK
Destroying test database for alias 'default'...

测验通过,而且经过单元测量试验,大家开采并消除了叁个bug。

 

供给的沟通我,QQ:1844912514

您恐怕感兴趣的稿子:

  • 利用Python的Django框架结合jQuery完结AJAX购物车页面
  • Python的Django REST框架中的类别化及供给和再次回到
  • 详解Python的Django框架中的templates设置
  • Python使用django获取客商IP地址的法子
  • 深入分析Python的Django框架的运转情势及管理流程
  • Django1.7+python 2.78+pycharm配置mysql数据库教程
  • python常用web框架轻巧品质测量检验结果分享(包含django、flask、bottle、tornado)
  • python django集成cas验证系统
  • 教您什么样将 Sublime 3 打造成 Python/Django IDE开垦利器
  • 详解Python的Django框架中manage命令的运用与扩大

Python中的单元测量试验 我们先来回看一下Python中的单元测量试验方法。 上面是三个Py...

 

01 python s6 day7 上节回想
02 python s6 day7 SNMP使用
03 python s6 day7 大型监察和控制架构讲明
04 python s6 day7 Redis使用
05 python s6 day7 定义监察和控制文书档案结构
06 python s6 day7 监察和控制架构讲明
07 python s6 day7 定义监察和控制模板
08 python s6 day7 自定义监察和控制项
09 python s6 day7 通过深copy达成各主机服务的自定义配置
10 python s6 day7 配置程序全局变量等新闻
11 python s6 day7 使用redis订阅服务
12 python s6 day7 客户端编写
13 python s6 day7 客商端按区别频率监控各服务
14 python s6 day7 客商端将监督数据重返给劳务器端
15 python s6 day7 作业须求表明

http://www.xuliangwei.com/ http://www.nnzhp.cn

 

L08-lesson08
01 python s6 day 8 上节回想
02 python s6 day 8 选用客户端数据后写入Redis
03 python s6 day 8 处理监察和控制数据
04 python s6 day 8 数据超越阀值后报告急方
05 python s6 day 8 编写监察和控制数据管理模块
06 python s6 day 8 面向对象编程拾遗

  cmdb

第1周

L09-lesson09
01py s6 day9 html概述
02py s6 day9 底部标签
03py s6 day9 body内标签1
04py s6 day9 body内标签2(password和form表单)
05py s6 day9 body内标签3(label和列表)
06py s6 day9 body内标签3(table和fieldset)
07py s6 day9 body内标签5(内联和块级标签)
08py s6 day9 class and style selector
09py s6 day9 class background
10py s6 day9 class border display margin padding
11py s6 day9 class position
12py s6 day9 后台管理框架
13py s6 day9 作业、

    cmdb

开战介绍

python发展介绍

第一个python程序

变量

字符编码与二进制

字符编码的差异与介绍

客商交互程序

if else流程判别

while 循环

while 循环优化版本

for 循环及作业供给

L11-lesson11
01 python s6 day 11 上节功课和阅读共享
02 python s6 day 11 jQuery选择器
03 python s6 day 11 jQuery选择器eq和nth-child的区别
04 python s6 day 11 jQuery表单接纳器
05 python s6 day 11 jQuery操作属性、css和再次来到顶端实例
06 python s6 day 11 jQuery过滤器、事件和扩张方法
07 python s6 day 11 jQuery模态对话框和ajax
08 python s6 day 11 eclipse景况的布局
09 python s6 day 11 MVC框架和python的WEB框架简要介绍
10 python s6 day 11 Eclipse django 使用
11 python s6 day 11 创建Django project and app
12 python s6 day 11 Django客商注册和ajax央求

    cmdb

第2周

L12-lesson12
01 python s6 day 12上节功课
02 python s6 day 12 Django路由系统
03 python s6 day 12 Windows下Python-MySQL模块的安装
04 python s6 day 12 模型字段类型
05 python s6 day 12 增加和删除改查过滤排序
06 day12 06 模版语言和跨站须要伪造1
07 day12 06 模版语言和跨站央求虚构2
08 python s6 day 12 模板extend和include

本节鸡汤

模块初识

pyc是什么

python数据类型

bytes数据类型

列表的施用

元组与购物车程序演习

购物行车路程序练习实例

字符串常用操作

字典的施用

三级菜单实例

本周学业-购物车优化

L13-lesson13
01 python s6 登入页面
010 python s6 Django装饰器扩大和作业
02 python s6 后台管理
03 python s6 客商管理列表中选取bootstrap的分页
04 python s6 Django中Form的使用
05 python s6 Django中Form的采用和源码解析
06 python s6 Django中间件的法力和python的反射
07 python s6 Django中间件的练习
08 python s6 Django利用装饰器创制过滤器
09 python s6 Django装饰器和顾客认证

第3周

L14-lesson14
01 python s6 day14 BBS项目介绍
02 python s6 day14 设计表结构
03 python s6 day14 设计表结构02
04 python s6 day14 启用商议插件
05 python s6 day14 定制django admin
06 python s6 day14 使用Bootstrap
07 python s6 day14 展示BBS列表
08 python s6 day14 彰显商议
09 python s6 day14 提交钻探内容
10 python s6 day14 增添斟酌
11 python s6 day14 创立新帖
12 python s6 day14 完成BBS版块动态切换
13 python s6 day14 达成BBS版块动态切换2

作业

上节内容回看

集合及其运算

文件读与写详解

心灵鸡汤

文本改革详解

字符编码转变详解

函数与函数式编制程序

函数式编制程序之参数详解

有的变量与全局变量功能域

递归

函数式编制程序与函数不相同

高阶函数

L15-lesson15
01 python s7 day15 上节功课
02 python s7 day15 web聊天室(一)
03 python s7 day15 web聊天室(二)
04 python s7 day15 web聊天室(三)
05 python s7 day15 web聊天室(四)
06 python s7 day15 web聊天室(五)
07 python s7 day15 web聊天室(六)
08 python s7 day15 web聊天室(七)
09 python s7 day15 web聊天室(八)
10 python s7 day15 带你走进分页的世界 (1)
11 python s7 day15 基础知识拾遗 (编码和反光)
12 python s7 day15 基础知识拾遗 (装饰器、随机验证码和岁月格式)
13 python s7 day15 基础知识拾遗(re、os、sys和学业)

第4周

L16-lesson16
01 python s6 day16 上节作业
02 python s6 day16 本次课程概要
03 python s6 day16 动态增进字段和方式精华类和新星类实行父类构造函数
04 python s6 day16 检查有着父类、诡异的__call__方法
05 python s6 day16 用type创建类
06 python s6 day16 用mytype创建类
07 python s6 day16 mytype中的__call__方法
08 python s6 day16 类的__new__方法
09 python s6 day16 自定义type创制类的梳理
10 python s6 day16 类的实例化进程的梳理
11 python s6 day16 安装tornado
12 python s6 day16 什么是session
13 python s6 day16 自定义session框架(一)
14 python s6 day16 自定义session框架二
15 python s6 day16 python索引器
16 python s6 day16 大型架构session框架
17 python s6 day16 tornado生命周期概述
18 python s6 day16 tornado源码深入解析意气风发
19 python s6 day16 tornado源码解析二
20 python s6 day16 django和tornado的差异

上节内容回想

心灵鸡汤

装饰器详解

装饰器应用详解

装饰器之函数即变量

装饰器之高阶函数

装饰器之嵌套函数

装饰器之案例深入深入分析

装饰器之高潮批注

迭代器与生成器

迭代器与生成器并行

放到方法详解

Json与pickle数据种类化

软件目录结构正式

本周学业

L17-lesson17
01 s6day 17 结束学业种类课前沉思
02 s6day 17 运转平台架构介绍
03 s6day 17 CMDB架构介绍
04 s6day 17 怎么着妄想NB的表结构
05 s6day 17 设计表结构
06 s6day 17 创设项目
07 s6day 17 使用Restful API标准
08 s6day 17 Django rest framework的使用
09 s6day 17 开拓符合Restful规范的接口
10 s6day 17 自动创制立异资金数额

  1.     第一篇:初识Python

  2.   其次篇:python基础之大旨风格

  3.   其三篇:python基础之数据类型与变量

  4.   第四篇:python基础之标准和巡回

  5. 第五篇:python基础之字符编码

  6. py编码终极版  苑昊先生

第5周

L18-lesson18
01 s6 day18 世界上最安全的API接口验证
02 s6 day18 中度自定义的权柄管理
03 s6 day18 监察和控制模块架构介绍
04 s6 day18 定义监察和控制模板等唇亡齿寒表结构
05 s6 day18 客商端自动叙述情形
06 s6 day18 监察和控制历史数据的管理
07 s6 day18 达成异步无阻塞的思绪
08 s6 day18 监控数据动态画图

   Py西游攻关之函数    苑昊先生

眼尖享受

ATM积攒零钱取钱案例解析

模块定义、导入、优化详解

内置模块详解之time与datetime模块

放置模块详解之Range模块

置于模块详解之OS模块

松手模块详解之Sys模块

嵌入模块详解之Shelve模块

停放模块详解之Xml模块

放到模块详解之Configparser模块

内置模块详解之Hashlib、Hmac模块

正则表明式Re模块使用详解

L19-lesson19-end
01 s6day19 最后黄金年代课介绍
02 s6day19 职分编排系统介绍
03 s6day19 架构讲明演示
04 s6day19 架构解说演示02
05 s6day19 Form表单的递进
06 s6day19 架构代码完结解释
07 s6day19 上传下载文件
08 s6day19 实现配置管理的笔触
10 s6day19 装饰器
11 s6 day19 学期总回看
12 s6 day19 结束学业后的提议

   Py西游攻关之装饰器  苑昊先生

第6周

   Py西游攻关之IOmodel 苑昊先生

本节小鸡汤(电影分享)

面向对象介绍

面向对象天性介绍

实例演示opp编制程序好处

实例变量与类变量

类变量的效果及析构函数

类的一而再接二连三

卓越类与新式类的承袭顺序

接轨实例讲解

多态实例讲授

本节功课之选课系统开辟

编辑:编程 本文来源:www.56.net老师上课博客目录

关键词:

  • 上一篇:没有了
  • 下一篇:没有了