python+request+pymysql+pytest数据驱动

一.pymysql简单使用

1.安装mysql

下载地址:https://www.mysql.com/,安装教程这里不做介绍了,网上一大推。

2.安装pymysql库

在Terminal终端输入:pip install pymysql

3.pymysql操作数据库

1)导入pymysql库,创建数据库连接

conn = pymysql.connect(host="127.0.0.1",  # 本地服务ip
                       user="root",  # 用户名
                       password="root",  # 密码
                       database="pymysql",  # 库
                       port=3306,  # 端口号
                       autocommit=False,  # 是否自动提交
                       charset="utf8")  # 设置utf编码

2)创建游标

execute()执行sql语句

cur = conn.cursor()  # 创建游标

sql = "create table student(id int(10),name varchar(10))"

cur.execute(sql)  # 执行sql,执行后返回的是影响的条数

创建游标执行sql语句后fetchall()默认返回元组类型的数据,我们要想让其返回dict类型的,可加入相应参数

cur = conn.cursor(pymysql.cursors.DictCursor)

executemany()执行sql语句

a_list = [(1, "李明"), (2, "李祥")]

sql = "insert into student (id,name ) values (%s,%s)"  # %s占位符,通用的

cur_list = cur.executemany(sql, a_list)  # 批量执行sql

executemany(self, query, args):为执行批量语句时使用的,query为执行的sql语句,args为传入的数据,列表中嵌套元组类型。

execute()也可批量执行语句,只是执行效率没executemany()快,因此执行单条语句时推荐使用execte(),批量时推荐使用exectemany()。

3)返回查询数据的操作

cur.fetchone() : 返回查询第一条的结果集

cur.fetchall() : 返回所有的查询结果集,元组类型

cur.fetchmany():  默认返回第一条结果集,可手动在括号中填写返回条数

cur.rowcount:返回影响的条数。注意这里是属性,不是方法

4)commit的使用

我们在操作数据库时,进行增删改后需求提交,否则的话数据库对应的数据是不会发生变化的

conn.commit()

若的创建数据库连接的时候autocommit设置为True,自动提交后。此步骤可省略

5)执行完毕后,关闭游标和数据库连接

cur.close()

conn.close()

 

二.数据驱动

1)我们以获取企业微信token为例,首先先从数据库获取相应的数据

def pymysql_01():

    # 创建数据库连接

    conn = pymysql.connect(host="127.0.0.1",  # 本地服务ip

                           user="root",  # 用户名

                           password="root",  # 密码

                           database="li",  # 库

                           port=3306,  # 端口号

                           autocommit=False,  # 是否自动提交

                           charset="utf8")  # 设置utf编码

    cur = conn.cursor(pymysql.cursors.DictCursor)  # 创建游标 pymysql.cursors.DictCursor为查询时返回dict类型

    sql = "select * from pymysql"

    cur.execute(sql)

    list_id = []

    for i in cur.fetchall():

        list_id.append(i)

    cur.close()

    conn.close()

    return list_id

2)@pytest.mark.parametrize()实现数据驱动

@pytest.mark.parametrize("param", pymysql_01())

def test_weixin(param):

    url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"

    data = requests.get(url, params=param)

    assert data.json()["errcode"] == 0

3)运行结果当然也是完美的

版权声明:本文由lzhuji.com主机评测所有
文章名称:《python+request+pymysql+pytest数据驱动》
文章链接:https://www.lzhuji.com/1809.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

本站不对信息的真伪做任何的保障,请自行甄别,自负责任。

登录

找回密码

注册