我正在为一个在数据库“mydatabase”中保存条目的程序进行单元测试。因此,我需要在测试每个功能后恢复db,以便其他测试不会受到影响。我尝试使用os.system()编写一个mysql命令来进行恢复。以下是该计划的相关部分:
class testSql(unittest.TestCase):
def setUp(self,
dbName = "mydatabase",
existingUser = "John",
nonExistingUser = "thisnamedoesnotexist",
):
os.system('mysql -u root -ppassword mydatabase < "mypath/schema.sql"')
self.dbName = dbName
self.existingUser = existingUser
self.nonExistingUser = nonExistingUser
def test_signUp(self):
self.assertFalse(sql.userExists(self.nonExistingUser))
sql.signUp(self.nonExistingUser,"password")
self.assertTrue(sql.userExists(self.nonExistingUser))
然而,当我运行程序时,我没有显示测试结果,而是只看到mysql命令的结果,终端冻结,因此我无法输入任何内容,只能关闭它:Result from terminal
我尝试的是:用操作系统创建一个函数并调用它;导入具有该功能的文件;使用exec()函数执行包含语句的文件;导入文件以执行语句
显然,os.system(“mysql-u root-ppassword”)工作得很好,但restore和dump命令不行。有没有人知道如何解决这个问题,或者以其他方式实现我的目标
好的,我发现问题是当用户已经存在时,我没有提交数据库,这导致连接没有关闭,而当我尝试创建另一个连接时(即使用mysql命令),后者永远等待第一个数据库结束
要防止这种情况:提交或关闭与数据库的连接,或在创建与数据库的另一个连接之前关闭游标(或使用同一游标进行恢复)
相关问题 更多 >
编程相关推荐