我有一堂课:
class DatabaseThing(): def __init__(self, dbName, user, password): self.connection = ibm_db_dbi.connect(dbName, user, password)
我想用一个测试数据库来测试这个类。因此,在我的测试课中,我正在做这样的事情:
import sqlite3 as lite import unittest from DatabaseThing import * class DatabaseThingTestCase(unittest.TestCase): def setUp(self): self.connection = lite.connect(":memory:") self.cur = self.connection.cursor() self.cur.executescript ('''CREATE TABLE APPLE (VERSION INT, AMNT SMALLINT); INSERT INTO APPLE VALUES(16,0); INSERT INTO APPLE VALUES(17,5); INSERT INTO APPLE VALUES(18,1); INSERT INTO APPLE VALUES(19,15); INSERT INTO APPLE VALUES(20,20); INSERT INTO APPLE VALUES(21,25);''')
与要测试的类中的连接相比,我将如何使用该连接?表示使用from的连接,setUp(self)而不是from的连接DatabaseThing。如果不实例化类,则无法测试功能。我想以__init__某种方式在Test Class中模拟该方法,但是在文档中没有发现任何有用的东西。
setUp(self)
DatabaseThing
__init__
除了模拟之外,您还可以简单地子类化数据库类并对此进行测试:
class TestingDatabaseThing(DatabaseThing): def __init__(self, connection): self.connection = connection
并实例 是 类,而不是DatabaseThing为你的测试。方法仍然相同,行为仍然相同,但是现在所有使用的方法都使用了self.connection测试提供的连接。
self.connection