小编典典

模拟__init __()进行单元测试

python

我有一堂课:

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中模拟该方法,但是在文档中没有发现任何有用的东西。


阅读 134

收藏
2021-01-20

共1个答案

小编典典

除了模拟之外,您还可以简单地子类化数据库类并对此进行测试:

class TestingDatabaseThing(DatabaseThing):
     def __init__(self, connection):
          self.connection = connection

并实例
类,而不是DatabaseThing为你的测试。方法仍然相同,行为仍然相同,但是现在所有使用的方法都使用了self.connection测试提供的连接。

2021-01-20