zoukankan      html  css  js  c++  java
  • 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:Cypresscypressfixturesdelete_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')
    
        })
        })
    
    

    运行结果

  • 相关阅读:
    git
    RT-Thread 4.0 + STM32F407 学习笔记1
    C#串口通信及数据表格存储
    NRF52832初步使用
    ubuntu终端下快捷键之--字体放大缩小
    微信公众号开发被动回复用户消息,回复内容Content使用了" "换行符还是没有换行
    python2018年秋季调研
    python图像处理模块Pillow--Image模块
    linux查看文件命令tail的使用
    使用xadmin更新数据时,报错expected string or bytes-like object
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13064796.html
Copyright © 2011-2022 走看看