前言
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')
})
})
運行結果