前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cypress web自动化35-cy.exec()执行python命令操作数据库

Cypress web自动化35-cy.exec()执行python命令操作数据库

作者头像
上海-悠悠
发布2020-06-10 15:09:00
8420
发布2020-06-10 15:09:00
举报

前言

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')

    })
    })

运行结果

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • python操作数据库
  • cy.exec() 执行py
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档