相关疑难解决方法(0)

测试postgres db python

我不知道如何测试我的存储库。

我想确保我确实将带有所有参数的对象保存到数据库中,并且当我执行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。

python postgresql python-unittest

6
推荐指数
1
解决办法
3862
查看次数

Python单元测试:如何对包含数据库操作的模块进行单元测试?

我使用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

3
推荐指数
1
解决办法
9836
查看次数