Python:MySQL+unittest+Selenium简单使用

MySQL+Navicat Premium+pymysql+selenium……所有环境都已安装好、配置好。
代码如下:

1. utils_sql.py:

# 第 16 章 数据驱动测试应用----16.4---数据库方式数据管理模块的实现--16.4.4--  模块化数据库操作
# 第 16 章/ utils_sql.py
import pymysql


class SqlTools:
    def __init__(self):
        # 本处初始化仅为当前示例服务,具体应用时从实际表中取数据,不需此操作。
        self.createTable()
        self.insertData()

    def createTable(self):

        db = pymysql.connect(host="localhost", user="root", passwd="ning", db="test")
        # 创建数据库游标
        cursor = db.cursor()
        cursor.execute("DROP TABLE IF EXISTS TEST_DATA")
        # 建表语句
        sql = """CREATE TABLE TEST_DATA (
            ID INT NOT NULL,
            EXPECT CHAR(20),
            ACTUAL CHAR(20)
            )"""
        # 执行 sql 语句
        cursor.execute(sql)
        db.close()

    def insertData(self):
        db = pymysql.connect(host="localhost", user="root", passwd="ning", db="test")
        cursor = db.cursor()
        sql = """INSERT INTO TEST_DATA (ID,EXPECT,ACTUAL)
        VALUES(1,'thinkerbang','pass'),
        (2,'Selenium','pass')"""
        try:
            cursor.execute(sql)
            db.commit()
        except:
            db.rollback()
        db.close()

    def getData(self):
        db = pymysql.connect(host="localhost", user="root", passwd="ning", db="test")
        cursor = db.cursor()
        sql = " SELECT EXPECT FROM TEST_DATA "
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            condata = []
            for result in results:
                temp = []
                temp.append(result[0])
                condata.append(temp)
        except:
            print("Error:unable to fetch data")
        db.close()
        return condata

    def updateData(self, expect, result):
        db = pymysql.connect(host="localhost", user="root", passwd="ning", db="test")
        cursor = db.cursor()
        sql = "UPDATE TEST_DATA SET ACTUAL = '%s' WHERE EXPECT = '%s'" % (result, expect)
        try:
            cursor.execute(sql)
            db.commit()
        except:
            db.rollback()
        db.close()

2. run_test_sql.py:

# 第 16 章 数据驱动测试应用----16.4---数据库方式数据管理模块的实现--16.4.4-- 模块化数据库操作
# 第 16 章/ run_test_sql.py
from selenium import webdriver
from time import sleep
import unittest
import ddt
from selenium.webdriver.common.by import By

from Chapter16.four_mysql.utils_sql import SqlTools

ob = SqlTools()
condata = ob.getData()


@ddt.ddt()
class TestBaiduSearch(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    @ddt.data(*condata)
    @ddt.unpack
    def test_search(self, text):
        self.driver.get("https://baidu.com")
        self.driver.find_element(By.ID, 'chat-textarea').send_keys(text)
        sleep(2)
        self.driver.find_element(By.ID, 'chat-submit-button').click()
        sleep(2)
        # 将执行结果写入数据表
        if text in self.driver.title:
            ob.updateData(text, 'pass')
        else:
            ob.updateData(text, 'fail')


if __name__ == '__main__':
    unittest.main()


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容