Python单元测试
属于标准库的一部分,类似于JUnit。下面是一个基本的例子:
1 2 3 4 5 6 7 8 9 10 11 12 |
# 编写测试用例模块 import util # 被测试模块 import unittest class TestUtilFunc(unittest.TestCase): def setUp(self): pass # 每个测试函数运行之前 def tearDown(self): pass # 每个测试函数运行之后 def test_indexOf(self): # 测试用例 self.assertEqual(0,util.stringutils.indexOf('123','1')) # 运行单元测试 if __name__ == '__main__' unittest.main() |
从这个例子可以看到:
- 测试用例以类的形式进行分组,从 unittest.TestCase继承
- 测试方法以开头
- unittest支持类似于JUnit的准备/清理机制
- 单元测试的入口点均为unittest.main()
- unittest.TestCase提供了一系列断言方法
可以在测试类、测试方法上添加装饰器,以便在特定条件下,跳过某些测试:
Graphite学习笔记
Graphite是一个开源项目,可以作为时间序列数据库(TSDB)使用,当你需要存储随着时间变化的数值时,应当考虑使用时间序列数据库。
除了数据的存储、查询外,Graphite还提供数据可视化(UI层)功能,它可以很好的在廉价的硬件上运行。你可以使用Graphite来监…
阅读全文Shinken学习笔记
Shinken是一个开源的IT监控框架,基于Python编写。Shinken从2009年开始发布,起初是作为一个简单的监控解决方案,由于越来越多的模块的加入,至2014年它被重新定位为“框架”。
Shinken的优势包括:
- 跨平台,它可以在W…
Django学习笔记
Django是一个Python的Web开发框架,它是一个WSGI规范的框架端实现。使用该框架可以把你从Web开发的很多重复劳动中解放出来而专注于业务逻辑。
Django运行速度非常快、并且是可扩容的,安全性方面也做的很好,可以避免一些常见的安全性错误。
TileStache知识集锦
添加代理(proxy)类型的图层,设置provider为相应的厂商。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "layers": { ...... "bing-satellite": { "provider": { "name" : "proxy", "provider" : "MICROSOFT_AERIAL" } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# a handy list of possible providers, which isn't # to say that you can't go writing your own. builtinProviders = { 'OPENSTREETMAP': OpenStreetMap.Provider, 'OPEN_STREET_MAP': OpenStreetMap.Provider, 'BLUE_MARBLE': BlueMarble.Provider, 'MAPQUEST_ROAD': MapQuest.RoadProvider, 'MAPQUEST_AERIAL': MapQuest.AerialProvider, 'MICROSOFT_ROAD': Microsoft.RoadProvider, 'MICROSOFT_AERIAL': Microsoft.AerialProvider, 'MICROSOFT_HYBRID': Microsoft.HybridProvider, 'YAHOO_ROAD': Yahoo.RoadProvider, 'YAHOO_AERIAL': Yahoo.AerialProvider, 'YAHOO_HYBRID': Yahoo.HybridProvider, 'CLOUDMADE_ORIGINAL': CloudMade.OriginalProvider, 'CLOUDMADE_FINELINE': CloudMade.FineLineProvider, 'CLOUDMADE_TOURIST': CloudMade.TouristProvider, 'CLOUDMADE_FRESH': CloudMade.FreshProvider, 'CLOUDMADE_PALEDAWN': CloudMade.PaleDawnProvider, 'CLOUDMADE_MIDNIGHTCOMMANDER': CloudMade.MidnightCommanderProvider, 'STAMEN_TONER': Stamen.TonerProvider, 'STAMEN_TERRAIN': Stamen.TerrainProvider, 'STAMEN_WATERCOLOR': Stamen.WatercolorProvider, } |
使用Python进行文本处理
在Python2中,类型 str 和 unicode 分别用于表示单字节字符串和Unicode字符串;在Python3中,所有字符串都使用Unicode表示,类型为str。
字符串可以使用单引号、双引号、三引号包围, 三引号中的字符串原样保留,可以方便的编写多行文本。
字符串的引号开始前,可以增加 u 、 r 修饰符,分别表示目标字符串是Unicode类型、不启用字符转义。
Python没有单独的字符类型,字符只是长度为1的字符串
在Python语言中,字符串属于(不可变)序列,支持有限的切片操作:
在Python中,此操作符可以用于成…
阅读全文Python网络编程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from socket import * # @UnusedWildImport DEFAULT_PORT = 1918 if __name__ == '__main__': # 创建基于IPv4的TCP套接字对象 s = socket( AF_INET, SOCK_STREAM ) # 绑定到通配符地址的1918端口 s.bind( ( '0.0.0.0', DEFAULT_PORT ) ) logging.debug( 'Echo server is listening on port %d', DEFAULT_PORT ) # 开始监听,最大排队数量(backlog)为10 s.listen( 10 ) while True: # 接受一个客户端连接请求,返回套接字对象和地址的元组 client, addr = s.accept() logging.debug( '%s connected', addr ) msg = client.recv( 1024 ) logging.debug( 'Received message : %s', msg ) client.send( msg ) client.close() |
以下是客户端代码:
1 2 3 4 5 6 7 8 9 10 |
from socket import * # @UnusedWildImport DEFAULT_PORT = 1918 if __name__ == '__main__': # 创建基于IPv4的TCP套接字对象 s = socket( AF_INET, SOCK_STREAM ) # 连接到服务器端 s.connect( ( '127.0.0.1', DEFAULT_PORT ) ) s.send( 'Hello Server!' ) logging.debug( 'Echo from server: %s', s.recv( 1024 ) ) |
asyncore模块将网络活动抽象为事件,由事件循环分派出去进行异步处理。事件循环通过select()或者poll()系统调用构建。
阅读全文Python并发编程
一个运行的程序称作进程。每个进程都有自己的系统状态,包括内存、已打开文件列表、用于跟踪正在执行的指令的程序计数器以及用于保存函数的局部变量的调用栈。通常在一个控制流序列中, 进程逐条执行语句,这一般称为进程的主线程。在任何一个给定的时刻,程序都只做…
阅读全文Python学习笔记
- Windows:可以使用WinPython,这是一个免安装、开箱即用的Python发布版,包含很多预置工具
- Linux:通常已经随操作系统安装
环境变量 | 说明 |
PYTHON_HOME | Python安装目录 |
PATH | 添加 %PYTHON_HOME%;%PYTHON_HOME%\Scripts |
PYTHONPATH |
Python的模块搜索路径,在前面出现的优先级高 仅在Windows下你可… |