pytest参数化实现DDT:读取数据库数据

Posted 永远不要矫情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest参数化实现DDT:读取数据库数据相关的知识,希望对你有一定的参考价值。

在这篇文章里,主要以mysql数据库为例。读取mysql数据库的数据主要分为三步:
1.安装mysqlclient模块
2.获得数据库连接
3.查询数据

1.安装mysqlclient模块

命令如下:

pip install mysqlclient

2.获取数据,实现DDT

代码如下:

import MySQLdb

import pytest

conn = MySQLdb.connect(  #获取一个conn
    user='root',
    passwd='123456',
    host='localhost',
    port=3306,
    db='test_ddt'
)


def get_data():
    query_sql = 'select id,name,age from person'
    lst = []
    try:
        cursor = conn.cursor() #获取一个游标
        cursor.execute(query_sql) #游标执行sql语句
        r = cursor.fetchall()
        for x in r:
            lst.append(x)
        return lst
    finally:
        cursor.close()
        conn.close()


@pytest.mark.parametrize('id, name, age', get_data()) #多个字段在同一个引号下,用逗号分隔
def test1(id, name, age):
    print(id, name, age)


if __name__ == '__main__':
    pytest.main(['-sv','test_mysql.py'])

数据库中person表的数据如下:
在这里插入图片描述
代码执行的结果如下:

test_mysql.py::test1[1-lily-23] 1 lily 23
PASSED
test_mysql.py::test1[2-bob-24] 2 bob 24
PASSED
test_mysql.py::test1[3-lisa-21] 3 lisa 21
PASSED

以上是关于pytest参数化实现DDT:读取数据库数据的主要内容,如果未能解决你的问题,请参考以下文章

pytest参数化实现DDT:读取CSV数据

pytest参数化实现DDT:读取excel文件

pytest学习和使用12-Unittest和Pytest参数化详解

DDT与pytest.mark.parametrize参数化区别

Pytest进阶之参数化

参数化之ddt数据驱动框架