自動化測試學習 python學習day7
阿新 • • 發佈:2018-12-22
連線MySQL資料庫
python和mysql相連 需要安裝Mysql-python的一個外掛
然後連線
import MySQLdb from datetime import date if __name__ == '__main__': # 連線資料庫,返回資料庫連線物件 conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='lzc', port=3306, charset='utf8') # 返回遊標物件 cur = conn.cursor() # 通過execute()執行sql語句 # ret = cur.execute("""select * from student where sname="jack";""") ret = cur.execute("""select * from student;""") print ret # 從查詢結果裡取出一條記錄 # data = cur.fetchone() # print data # print data[0] # print data[1] # print data[2] # print data[3] # print data[4].year # print data[4].month # print data[4].day # 取出查詢結果的所有行 datas = cur.fetchall() print datas for data in datas: print data[1] # 斷開連線 conn.close()
將員工註冊資訊寫入資料庫,查詢也從資料庫查。程式碼如下
import MySQLdb def register(cur): """ 註冊使用者 :param path: 儲存帳號資訊的檔案路徑 :return: 0: 成功 1: 失敗 """ user = raw_input('請輸入使用者名稱:') passwd = raw_input('請輸入密碼:') sql = '''insert into account(username, password) values('%s', '%s');'''%(user, passwd) try: cur.execute(sql) except: return 1 return 0 def login(cur): """ 使用者登入系統 :param path: 儲存帳號資訊的檔案路徑 :return: 0: 成功 1: 使用者名稱不存在,登入失敗 2. 密碼錯誤,登入失敗 """ user = raw_input('請輸入使用者名稱:') passwd = raw_input('請輸入密碼:') sql = '''select password from account where username='%s';'''%user # print sql ret = cur.execute(sql) if ret == 1: if passwd == cur.fetchone()[0]: return 0 else: return 2 if ret==0: return 1 def main(): conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='lzc', port=3306, charset='utf8') c = conn.cursor() while True: print '1. 註冊使用者' print '2. 登入系統' print '3. 退出系統' opt = raw_input('請選擇[1-->3]:') if '1' == opt: ret = register(c) if not ret: print '註冊使用者成功\n' else: print '註冊失敗\n' elif '2' == opt: ret = login(c) if ret == 0: print '登入成功\n' elif ret == 1: print '使用者名稱不存在,登入失敗\n' else: print '密碼錯誤,登入失敗\n' elif '3' == opt: break else: print "錯誤選項!\n" conn.close() print "Bye." if __name__ == '__main__': main()
unittest單元測試框架
import MySQLdb def register(cur): """ 註冊使用者 :param path: 儲存帳號資訊的檔案路徑 :return: 0: 成功 1: 失敗 """ user = raw_input('請輸入使用者名稱:') passwd = raw_input('請輸入密碼:') sql = '''insert into account(username, password) values('%s', '%s');'''%(user, passwd) try: cur.execute(sql) except: return 1 return 0 def login(cur): """ 使用者登入系統 :param path: 儲存帳號資訊的檔案路徑 :return: 0: 成功 1: 使用者名稱不存在,登入失敗 2. 密碼錯誤,登入失敗 """ user = raw_input('請輸入使用者名稱:') passwd = raw_input('請輸入密碼:') sql = '''select password from account where username='%s';'''%user # print sql ret = cur.execute(sql) if ret == 1: if passwd == cur.fetchone()[0]: return 0 else: return 2 if ret==0: return 1 def main(): conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='lzc', port=3306, charset='utf8') c = conn.cursor() while True: print '1. 註冊使用者' print '2. 登入系統' print '3. 退出系統' opt = raw_input('請選擇[1-->3]:') if '1' == opt: ret = register(c) if not ret: print '註冊使用者成功\n' else: print '註冊失敗\n' elif '2' == opt: ret = login(c) if ret == 0: print '登入成功\n' elif ret == 1: print '使用者名稱不存在,登入失敗\n' else: print '密碼錯誤,登入失敗\n' elif '3' == opt: break else: print "錯誤選項!\n" conn.close() print "Bye." if __name__ == '__main__': main()
import unittest
from HTMLTestRunnerCN import HTMLTestRunner
from testcases import AddTests
if __name__ == '__main__':
# 從測試用例的類中載入測試用例,返回測試套件(testsuite 測試用例的集合)
testsuite = unittest.defaultTestLoader.loadTestsFromTestCase(AddTests)
# report = open('report.txt', 'w')
# 建立一個TextTestRunner物件
# runner = unittest.TextTestRunner(stream=report, verbosity=2)
report = open('report.html', 'w')
runner = HTMLTestRunner(stream=report, verbosity=2,description='測試描述資訊', title='Add測試報告', tester='李志超')
# 執行測試套件
runner.run(testsuite)
report.close()
import unittest
from testclass import Maths
class AddTests(unittest.TestCase):
"""
add函式測試用例
"""
def setUp(self):
# print 'setUp.'
self.m = Maths()
def tearDown(self):
# print "tearDown."
pass
# 每個test開頭的方法對應一個測試用例
def test1(self):
m = self.m
ret = m.add(1, 2)
self.assertEqual(ret, 3, msg='返回值不等於預期')
# 每個test開頭的方法對應一個測試用例
def test2(self):
m = self.m
ret = m.add('hello', 'world')
self.assertEqual(ret, 'helloworld', msg='返回值不等於預期')
# 每個test開頭的方法對應一個測試用例
def test3(self):
m = self.m
ret = m.add([11,22], [33,])
self.assertEqual(ret, [11,22,33,], msg='返回值不等於預期')
class AddTests(unittest.TestCase):
"""
add函式測試用例
"""
# @classmethod
# def setUpClass(cls):
# print "setUpClass..."
#
# @classmethod
# def tearDownClass(cls):
# print "tearDownClass..."
def setUp(self):
# print 'setUp.'
self.m = Maths()
def tearDown(self):
# print "tearDown."
pass
# 每個test開頭的方法對應一個測試用例
def test1(self):
m = self.m
ret = m.add(1, 2)
self.assertEqual(ret, 4, msg='返回值不等於預期')
# 每個test開頭的方法對應一個測試用例
def test2(self):
m = self.m
ret = m.add('hello', 'world')
self.assertEqual(ret, 'helloworld', msg='返回值不等於預期')
# 每個test開頭的方法對應一個測試用例
def test3(self):
m = self.m
ret = m.add([11,22], [33,])
self.assertEqual(ret, [11,22,33,], msg='返回值不等於預期')