我通过MySQLdb的库访问从Python中的MySQL数据库。 我试图测试数据库连接,如下图所示。
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
try:
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
ver = results[0]
if (ver is None):
return False
else:
return True
except:
print "ERROR IN CONNECTION"
return False
这是编写测试用例单位时,应该测试连接的正确方法? 如果有更好的办法,请指教!
我可能是错的(或误解你的问题:)),但我相信在连接相关的异常被扔在MySQLdb.connect()
随着MySQLdb的,来捕获异常是MySQLdb.Error
。 因此,我建议移动db
设置了内部try
块和捕捉适当的异常( MySQLdb.Error
)。 此外,作为@JohnMee提到, fetchone()
将返回None如果没有结果,所以这应该工作:
try:
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
# Check if anything at all is returned
if results:
return True
else:
return False
except MySQLdb.Error:
print "ERROR IN CONNECTION"
return False
如果你不关心的连接,只是希望测试查询的执行,我想你可以离开连接设置外面try
,但包括MySQLdb.Error
在你的例外,也许如下:
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
try:
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
# Check if anything at all is returned
if results:
return True
else:
return False
except MySQLdb.Error, e:
print "ERROR %d IN CONNECTION: %s" % (e.args[0], e.args[1])
return False
这将至少给你失败的原因更详细的原因。