摘要: 简介:软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作。既然如此,为什么不让程序员在编写软件时自己加入一些用于测试的代码,使测试过程自动化呢?在软件工程中,这一技术称为自动单元测试,本文介绍在用Python开发软件时如何实现这一目标。一、软件测试大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施。正像软件熵(software entropy)所描述的那样:一个程序从设计很好的状 阅读全文
posted @ 2010-10-27 17:48 张长胜 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Pythonunittest模块的相关用法待测源码类:widget.py#!/usr/bin/env pythonclass Widget: def __init__(self, size = (40, 40)): self._size = size def getSize(self): return self._size def resize(self, width, height): if width == 0 or height < 0: raise ValueError, "illegal size" ... 阅读全文
posted @ 2010-10-27 17:45 张长胜 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 代码: #! /usr/bin/python# Filename: inherit.py# Author: yanggangclass SchoolMember: def __init__(self,name,age): self.name = name self.age = age print 'init SchoolMember: ', self.name def tell(self): print 'name:%s; age:%s' % (self.name, self.age)class Teacher(SchoolM... 阅读全文
posted @ 2010-10-27 17:04 张长胜 阅读(256) 评论(0) 推荐(0) 编辑
摘要: Server:# serverimport socketaddress = ('127.0.0.1', 31500)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # s = socket.socket()s.bind(address)s.listen(5)ss, addr = s.accept()print 'got connected from',addrss.send('byebye')ra = ss.recv(512)print rass.close()s.close()Clie 阅读全文
posted @ 2010-10-27 15:49 张长胜 阅读(218) 评论(0) 推荐(0) 编辑
摘要: Server:import socketaddress = ('127.0.0.1', 31500)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.bind(address)while True: data, addr = s.recvfrom(2048) if not data: print "client has exist" break print "received:", data, "from", addrs.close()Client:import 阅读全文
posted @ 2010-10-27 15:38 张长胜 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 重剑点评: 真简单明了!复习网络编程,顺便学习python。一、套接字套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套接字的支持。三种最流行的套接字类型是:stream,datagram 阅读全文
posted @ 2010-10-27 14:38 张长胜 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 1. 模块定义(单独显示一页)/** @defgroup 模块名 模块的说明文字* @{*/… 定义的内容 …/** @} */ // 模块结尾2. 分组定义(在一页内分组显示)/** @name 分组说明文字* @{*/… 定义的内容 …/** @} */3. 变量、宏定义、类型定义简要说明/** 简要说明文字 */#define FLOAT float/** @brief 简要说明文字(在前面加 @brief 是标准格式) */#define MIN_UINT 0/** 分行的简要说明 /n* 这是第二行的简要说明*/int b;4. 函数说明/** 简要的函数说明文字 * @param 阅读全文
posted @ 2010-10-27 11:13 张长胜 阅读(136) 评论(0) 推荐(0) 编辑