澳门新蒲京娱乐


启动 uiautomatorviewer 时报 SWT folder '..\lib\location 新蒲京官方下载:of your Java installation.' does not exist.

值替换为指定值的三种方法分享,百度分享插件的相关参数

对Python的Django框架中的项目进行单元测试的方法,老师讲课博客目录

47_1      
 CMDB资金财产采撷

对Python的Django框架中的项目开始展览单元测试的主意,pythondjango

 Python中的单元测试

我们先来回看一下Python中的单元测试方法。
上面是3个 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)

唯独这样运维后收获的结果,本身每一趟都得算一下去审查批准2回,很不便宜,Python中有
unittest
模块,能够很有利地张开测试,详细情况能够文章最终的链接,看官方网址文书档案的详细介绍。

上面是3个简短的示范:

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)

汗!发现了没,竟然三个都战败了,测试发现:

四.贰除以3 也就是 一.伍仟000000000001 不对等期望值 一.四

9除以四等于二,不对等期望的 二.25

下边大家就是要修复那一个标题,再度运维测试,直到运营不报错截至。

例如依据实情,若是大家只要求保留到小数点后6个人,能够如此改:

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

再一次运营就不报错了:

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

 
OK

Django中的单元测试

尽快实行单元测试(UnitTest)是比较好的做法,极端的境况竟然重申“测试先行”。未来大家已经有了第3个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
四th》中,7.贰节,最后促成的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。

 

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

您只怕感兴趣的篇章:

  • 使用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中的单元测试方法。 下边是3个Py…

       目录补充

            
 Python之路【第七捌篇】:Web框架们

        其三篇:白话tornado源码之请求来了

  1.    
       新蒲京官方下载 ,Python开荒【第八伍篇】:Web框架之Tornado

54.

47_2            
 Ali云api调用做轻巧的cmdb

     [Django之路

项目实战之<教育行业C奥迪Q5M开垦>]()

55.
          爬虫
 Q2Day81

 55_1       爬虫
  Q2Day79

     python
s12 day2

   http的伸手和响应进程贰

  http的乞求和响应进度3

    python s12
day3

  MongoDB学习笔记(一)MongoDB概述和装置

    JavaScript、Dom、jQuery

    Django验证码【附源码】

         Django
REST framework

 Django篇:

  web框架本质 

  Django
安装使用基础

  Django(二)路由系统、视图、模板 

  Django(3) O奥迪Q7M
数据库操作

  Django(四) OQashqaiM
外键操作及初识Ajax

  Django(五)母版承继、Cookie、视图装饰器等

  Django(六)Session、CSRF、中间件

  Django(七)缓存、信号、Form

  Django(八)上:Model操作和Form操作

  Django(八)下:Model操作和Form操作、体系化操作

  Django(九)上:ModelForm操作

  Django(玖)下:Ajax操作、图片验证码、Kind艾德itor使用

 

linux:

samba配置:

 

ubuntu:

mysql启停:

mysql开启3306端口:

安装pip:

 

python:

线程指南:

一行python达成互相之间:

memcache的权重原型代码:

PEP捌 Python 编码规范整治:

  

Django:

django
web框架:

django 开端化数据库:

django
请求及参数字传送递:

django
model报错:

django框架学习-Model进阶用法:

 

前端:

天帅大神的html详解:http://www.cnblogs.com/luotianshuai/p/5159449.html

jquery: 

JavaScript、Dom、jQuery:

bootstrap-modal:http://www.bkjia.com/webzh/1037178.html 

 

Echarts:

离线使用echarts及部分细节:

 

银角脑残粉必备 :

目录:

JavaScript、Dom、jQuery:

django基础:

django基础2:

爬虫:

51:

 20170622博客:    
 Django部分剧情(武沛齐)

金角权威那三个鲜为人知的博客:

linux基础:

面试题:

 

python模块

1.pywin32 

贰.Microsoft Visual C++ 玖.0 is required  Unable to find
vcvarsall.bat的缓解办法:

 

git

1.

2.

 

  1.  
      Bootstrap框架(一)

  2.  
      Bootstrap框架(二)

  3.  
      Bootstrap框架(三)

  4.  
      Django~1

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

37_1    
 KindEditor

  1.  
        Python开拓【第9七篇】:MySQL(1)

  2.  
        Python开辟【第拾捌篇】:MySQL(二)

  3.  
        Python开荒【第七九篇】:Python操作MySQL

  1.  
      Http协议

  2.        
     Python CMDB开发

  1.  
    第5篇:python基础之文件处理

  2.   第7篇
    python基础之函数,递归,内置函数

  3.   第玖篇
    迭代器协议和生成器

  4.   第九篇
    装饰器

  5. 第7篇
    面向对象的顺序设计

  6.   第十一篇
    面向对象进阶

  7.   第9二篇
    极度处理

  8.   第八3篇
    python基础之socket编制程序

  9.  
    常用模块

  10.  
    模块与包

  11.  
    进度与线程

   jQuery

  1.  
      数据库基础

  2.  
      数据库进阶

  3.    
        MySQL练习题

  4.            
        MySQL演习题参考答案

  5.    
       Python之路【第7六篇】:Django【基础篇】

  6.    
       Python之路【第九7篇】:Django【进阶篇

  1.    
       Python之路【第九篇】:Python操作
    RabbitMQ、Redis、Memcache、SQLAlchemy

  2.    
       Python开采【第玖陆篇】:AJAX全套

    
 Django基础(一)

  cmdb

39          
 python 之路,Day12 –
redis缓存数据库

  1.        python
    之路,Day二7 –
    主机管理+壁垒机系统开拓

  2.    
      Python之路,Day12 –
    那就做个壁垒机呢

  3.  
      Python之路,Day20 –
    分布式监察和控制连串开拓

  4.  
      Python之路,Day19 –
    CMDB、CMDB、CMDB

  5.  
      Python之路,Day1八 –
    开采1个WEB聊天来撩妹吧

  6.  
      Python之路,Day一七 –
    分分钟做个BBS论坛

 bootstrap cdn在线地址

    cmdb

           
    Py西游攻关之Django(一) 
 苑昊先生

26_1.      
Django-ajax

       jQuery网址

35-8             
 Tyrion普通话文书档案(含示例源码)

35-6       
 Python生成随机验证码

  1.    
    第一篇:初识Python

  2.  
    第一篇:python基础之焦点风格

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

  4.  
    第四篇:python基础之规范和巡回

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

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

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图