1. 程式人生 > >自動化測試學習 python學習day7

自動化測試學習 python學習day7

連線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='返回值不等於預期')