我不知道如何测试我的存储库。
我想确保我确实将带有所有参数的对象保存到数据库中,并且当我执行SQL语句时,确实收到了应有的信息。
但是,我不能"CREATE TABLE test_table在单元setUp测试用例的方法中放入“,因为它将被多次创建(同一测试用例的测试是并行运行的)。因此,只要我在同一类中创建两个需要在同一方法上工作的方法表格,将无法使用(表格名称冲突)
相同,我不能放"CREATE TABLE test_table" setUpModule,因为现在表创建一次,但是由于测试是并行运行的,因此没有什么可以阻止将同一对象多次插入到我的表中,这打破了某些字段的唯一性约束。
同样,我不能"CREATE SCHEMA some_random_schema_name"在所有方法中都使用,因为我需要为给定数据库全局全局设置“ SET search_path TO ...”,因此并行运行的每个方法都将受到影响。
我看到的唯一方法是"CREATE DATABASE"使用唯一的名称为每个测试创建to ,并建立与每个数据库的单独连接。.这看起来非常浪费。有没有更好的办法?
另外,由于需要测试PostgreSQL,因此无法在内存中使用SQLite。
我使用pymysql客户端库连接到真正的数据库.我在模块的功能,在这里我在python这个功能连接到使用pymysql数据库,并只做数据库插入operations.How单元测试没有击中真实的数据库?
import pymysql
def connectDB(self):
# Connect to the database
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db')
try:
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('newuser@some.com', 'newpassword'))
connection.commit()
Run Code Online (Sandbox Code Playgroud)
我的python版本是2.7.
python unit-testing python-2.7 python-unittest python-unittest.mock