Cypress web自動化35-cy.exec()執行python命令操作數據庫


前言

cy.exec()可以執行系統命令,獲取到stdout內容,當我們要操作數據庫,准備測試數據的時候,通常用python連數據庫操作會非常方便。
我們可以先把操作數據庫的方法封裝到一個py文件,這樣執行的結果print到控制台輸出上,通過執行cy.exec()獲取到stdout內容就可以了。

python操作數據庫

使用python清理測試數據,如需要注冊一個用戶,可以先在數據庫user表刪除這個用戶,就可以重復去注冊用戶了

# delete_sql.py
import pymysql
'''
環境安裝
pip install PyMySQL==0.9.3
作者:上海-悠悠 交流QQ群:939110556
'''


dbinfo = {
    "host": "192.168.1.x",
    "user": "root",
    "password": "123456",
    "port": 3306}


class DbConnect():
    def __init__(self, db_cof, database=""):
        self.db_cof = db_cof
        # 打開數據庫連接
        self.db = pymysql.connect(database=database,
                                  cursorclass=pymysql.cursors.DictCursor,
                                  **db_cof)

        # 使用cursor()方法獲取操作游標
        self.cursor = self.db.cursor()

    def select(self, sql):
        # SQL 查詢語句
        # sql = "SELECT * FROM EMPLOYEE \
        #        WHERE INCOME > %s" % (1000)
        self.cursor.execute(sql)
        results = self.cursor.fetchall()
        return results

    def execute(self, sql):
        # SQL 刪除、提交、修改語句
        # sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
        try:
           # 執行SQL語句
           self.cursor.execute(sql)
           # 提交修改
           self.db.commit()
        except:
           # 發生錯誤時回滾
           self.db.rollback()

    def close(self):
        # 關閉連接
        self.db.close()


if __name__ == '__main__':
    delete_sql = 'delete from auth_user WHERE username="test100";'
    try:
        db = DbConnect(dbinfo, database="apps")
        db.execute(delete_sql)  # 查詢
        db.close()
        print("success")
    except Exception as msg:
        print("execute sql error:%s"%str(msg))

執行結果: success

cy.exec() 執行py

delete_sql.py 文件放到一個目錄,如:D:\Cypress\cypress\fixtures\delete_sql.py

  • cy.exec() 執行cmd命令行指令
  • result 執行結果返回 {stdout: "success", stderr: "", code: 0}
  • cy.log() 報告輸出日志內容
  • expect 斷言返回結果
/**
 * Created by dell on 2020/5/11.
 * 作者:上海-悠悠 交流QQ群:939110556
 */


describe('執行系統命令', function() {
    // 執行sql清理測試數據
    beforeEach(() => {
          cy.exec("python D:\\Cypress\\cypress\\fixtures\\delete_sql.py")
             .then(result => {
             var a = result.stdout;
             //  打印結果
             cy.log(a)
             // 斷言 返回結果
             expect(result.stdout).eq("success")
        })

        })

    it("登陸案例", () =>
    {
        // 輸入用戶名
        cy.visit('https://www.cnblogs.com/yoyoketang')

    })
    })

運行結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM