从零开始学Python

第十三章:数据库操作、测试

sqlite小型嵌入式数据库为例来讲解,要下载sqlite.exe文件,把它当做模块导入,然后在进行连接等;内容比较简单主要分为两点:

1.建立表

首先要建立连接

>>import sys

>>sys.path.append("E:\\sqlite")

>>import sqlite3

>>conn=sqlite3.connect("foot.db")     #建立连接

>>cus=conn.cursor()                #获取游标,游标用来执行语句和获取结果

 

>>for line in open("E:\\sqlite\\src/1.txt"):

fields=line.split("^")

vals=[conver(f) for f in fields[:field_count]]

cus.execute(query,vals)           #插入数据

                           

>>cus.execute('''

CREATE TABLE food(

id     TEXT  PRIMARY KEY,

desc   TEXT,

water  FLOAT

)

''')                              ##建表

>>conn.commit()

>>conn.close()

 

2.查询操作

>>query2='SELECT * FROM food'

>>cus.execute(query2)

>>names=[for[0] for f in cus.description]

>>for row in cus.fetchall():

for f in zip(nams,row):

print(f)

                       测试:

1.测试的四步

指出需要的新特性,记录下来,然后编写一个测试

编写特性的概要代码,这样程序就可以运行而没有任何语法等方面的错误,但是测试会失败,在试图让测试成功前,要看到测试的失败。

为特性的概要编写虚设代码,能满足测试要求就行,不用准确的实现功能,只要保证测试通过就可以。

重写代码。

2.测试工具

标准库中的模块可以助我们一臂之力:

通用测试框架:unitest

简单的一些模块,用于检查文档:doctest

3.doctest

    def square(x):

'''

square

'''

return x*x

if __name__=='__main__':

import doctest.doctext

doctest.testmod(doctext)

在上述实例中,doctest.testmod()函数从一个模块读取所有文档字符串,找出所有看起来像是在交互式解释器中输入例子的文本,之后检查例子是否符合要求。

4.unitest

   是一种基于java的流行测试框架,灵活强大。

import unittest,sys

sys.path.append("E:\\python\\python")

import my_math

class produ(unittest.TestCase):

def testIntegers(self):

for x in xrange(-10,10):

for y in xrange(-10,10):

p=my_math.product(x,y)

self.failUnless(p=x*y,'failed!!!!!')

def testFloats(self):

for x in xrange(-10,10):

for y in xrange(-10,10):

x=x/10.0

y=y/10.0

p=my_math.product(x,y)

self.failUnless(p=x*y,"float failed")

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

在上例中,unittest.main会实例化所有TestCase的子类,运行所有名字以test开头的方法

还有更多关于它的方法请看附件;

5.分析

   调用模块

   >>import profile

   >>from my_math import product

   >>profile.run(product(1,2))

  最后打印的将会是函数运行花费的时间

   >>import pstats

   >>p=pstats.Stats(‘’)

  将结果保存到文件中,调用Stats对象以编程的方式检查结果

另外还有timeit模块测定小代码段的运行时间。

<!--EndFragment-->

你可能感兴趣的:(python)