python接口自动化框架

介绍

在进行接口测试的过程中,我们经常会需要与数据库进行交互,读取、写入测试数据等。Python作为一种高级编程语言,自带连接数据库的功能,非常适合用来编写接口自动化测试框架。本文将详细介绍如何使用Python连接数据库,并在接口自动化测试框架中使用。

MySQL数据库

MySQL是一种常见的关系型数据库,支持多种编程语言的访问。在Python中,可以使用MySQLdb、pymysql等第三方库连接MySQL数据库。

在使用这些库前,需要先安装相关库和MySQL驱动。以MySQLdb库为例,可以使用以下命令进行安装:

```

pip install MySQL-python

```

接着,我们可以用以下代码来测试MySQL连接:

```

import MySQLdb

db = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test_db', port=3306)

cursor = db.cursor()

cursor.execute('SELECT version()')

data = cursor.fetchone()

print('MySQL version:', data)

```

这段代码连接到本地的test_db数据库,输出MySQL的版本信息。其中,host、user、passwd、db和port分别代表数据库的地址、用户名、密码、数据库名和端口号。cursor对象用于执行SQL语句,并可以通过fetchone()方法获取查询结果。

SQLite数据库

SQLite是一种轻量级的关系型数据库,常用于嵌入式系统和移动设备上。在Python中,可以使用sqlite3库连接SQLite数据库。

首先,需要使用以下代码来创建并连接到一个SQLite数据库:

```

import sqlite3

conn = sqlite3.connect('test.db')

```

这里我们创建了一个test.db文件作为我们的SQLite数据库。接着,我们可以用以下代码来创建一个表:

```

conn.execute('''

CREATE TABLE users

(ID INT PRIMARY KEY NOT NULL,

NAME TEXT NOT NULL,

AGE INT NOT NULL)

''')

```

这个SQL语句创建了一个名为users的表,包含ID、NAME和AGE三个字段。接着,我们可以用以下代码来往表中插入数据:

```

conn.execute("INSERT INTO users (ID, NAME, AGE) VALUES (1, 'Tom', 18)")

conn.execute("INSERT INTO users (ID, NAME, AGE) VALUES (2, 'Jerry', 20)")

conn.commit()

```

这里我们插入了两条数据,分别是ID为1、NAME为Tom、AGE为18,和ID为2、NAME为Jerry、AGE为20。最后,我们需要使用以下代码来查询表中的数据:

```

cursor = conn.execute('SELECT * FROM users')

for row in cursor:

print(row)

```

这里使用execute()方法执行了一个SELECT语句,得到了表中的所有数据并输出。

应用实例

接下来,我们将介绍如何在接口自动化测试框架中使用Python连接数据库。

假设我们要测试一个用户注册接口,需要在数据库中插入一些测试数据,并在测试完成后清理数据。首先,我们可以定义一个Database类来封装数据库操作:

```python

import MySQLdb

class Database:

def __init__(self, host, user, password, db, port=3306):

self.host = host

self.user = user

self.password = password

self.db = db

self.port = port

self.conn = None

self.cursor = None

def connect(self):

self.conn = MySQLdb.connect(

host=self.host,

user=self.user,

password=self.password,

db=self.db,

port=self.port

)

self.cursor = self.conn.cursor()

def close(self):

if self.cursor:

self.cursor.close()

if self.conn:

self.conn.close()

def query(self, sql):

self.cursor.execute(sql)

return self.cursor.fetchall()

def execute(self, sql):

self.cursor.execute(sql)

self.conn.commit()

def insert_user(self, name, password):

self.execute(f"INSERT INTO users (name, password) VALUES ('{name}', '{password}')")

def delete_users(self):

self.execute("DELETE FROM users")

```

这个类封装了MySQLdb库的一些基本操作。其中,connect()方法用于连接数据库,可以在测试用例之前调用;close()方法用于关闭连接;query()和execute()方法用于查询和执行SQL语句。另外,insert_user()方法用于向用户表中插入一条数据,delete_users()方法用于删除用户表中的所有数据。

接着,我们可以在测试用例中使用这个类:

```python

import requests

from database import Database

def test_register():

db = Database('localhost', 'root', 'password', 'test_db')

db.connect()

# 插入测试数据

db.insert_user('test_user', 'test_password')

# 调用接口

response = requests.post('http://127.0.0.1:8000/register', json={

'name': 'test_user',

'password': 'test_password'

})

# 断言响应结果

assert response.status_code == 200

assert response.json() == {'code': 0, 'msg': 'success'}

# 清理测试数据

db.delete_users()

db.close()

```

这里我们使用了requests库调用接口,并使用Database类在测试用例开始前插入了一条测试数据,在测试用例结束后清理了此条数据。

结论

在Python中连接数据库非常方便。通过简单的封装,我们可以将数据库操作封装成一个类,方便在测试用例中使用。在接口自动化测试中,数据库尤其重要,应重视数据库的构建和管理。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(10) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部