【技能提升】python操作数据库完成接口测试

各位小伙伴,接口测试中我们会使用到各种各样的数据,特别是在编写接口自动化测试代码时,我们不可能在代码中写”死”数据,我们需要把数据和代码分离,便于我们后期维护代码和数据。

数据储存的形式多种多样,我们可以储存到txt格式的文档里,也可以储存到csv格式的文件里,前面两种都是数据量比较小的时候我们可以临时使用一下,但数据量多的时候我们都是储存到数据库中的。Mysql是我们最常用到的关系型数据库,接下来我们来学习一下,怎么使用python获取数据库中的数据,然后使用到接口测试中。

阅读这篇文章你需要python,mysql,接口测试,软件测试,自动化测试等知识

首先数据是储存在mysql数据库中的,如用户登录的用户名和密码,我们需要获取用户名和密码作为登录接口的参数,如下图:

下面是我们的自动化接口测试代码,接口测试中使用了requests和unittest测试框架。如标注的地方,需要我们从数据库获取数据来替换

Import unittest#这种引入模块的方式,使用模块里的变量或函数时,要用模块名.函数来使用函数

Import requests

Class Myclass(unittest.TestCase):

#为用例初始化

Def setUp(self):

pass

Def test_longin(self):

#这里的用户名和密码需要从数据库中获取

data={"name":'maker','passwd':'123456'}

res=requests.post('http://127.0.0.1:8808/api/block/login',params=data)

print(res.text)

mystr2=res.text

mystr='''{

"code":"200",

"msg":"成功",

"data":"bbb"

}'''

self.assertEqual(mystr,mystr2,"预期结果和实际结果不符")

if__name__=='__main__':

unittest.main()

接下来我们看一下怎么使用python从mysql数据库中获取数据,具体的步骤如:

1. 引入pymysql

2. 连接数据库

3. 创建游标对象

4. 查看一下所在数据库(如果不在,需要切换数据库)

5. 获取数据

6. 关闭数据库

上面需要注意的是,必须先下载pymysql模块

代码如下:

#1.引入pymysql

import pymysql

#2.连接数据库

mydb=pymysql.connect(host='localhost',port=3306,user='root',

passwd='123456',db='qftestdb',charset='utf8')

#3..创建游标对象

cur=mydb.cursor()

#4.查看所在的数据库

cur.execute("select DATABASE()")

data=cur.fetchone()

print(data)

#5.获取数据

str="select *from user"

cur.execute(str)

data=cur.fetchone()

print(data)#这里就是获取的数据

#6.关闭数据库

mydb.close()

现在我们知道怎么使用python从mysql获取数据,接下来我们要把两份代码整合到一起,重点在如下图

你需要的完整代码如下:

import unittest

"""

这种引入模块的方式,使用模块里的变量或函数时,

要用模块名.函数来使用函数

"""

import requests

# 1.引入pymysql

import pymysql

class Myclass(unittest.TestCase):

def setUp(self):

# 2.连接数据库

mydb = pymysql.connect(host='localhost', port=3306,

user='root', passwd='123456', db='qftestdb', charset='utf8')

# 3..创建游标对象

cur = mydb.cursor()

# 4.查看所在的数据库

cur.execute("select DATABASE()")

data = cur.fetchone()

print(data)

# 5.获取数据

str = "select *from user"

cur.execute(str)

data = cur.fetchone()

#需要把data中的数据给到test_login函数中

self.user=data[0]

self.password=data[1]

# 6.关闭数据库

mydb.close()

def test_longin(self):

data = {"name":self.user, 'passwd':self.password}

res = requests.post('http://127.0.0.1:8808/api/block

/login',params=data)

print(res.text)

mystr2 = res.text

mystr = '''{

"code": "200",

"msg": "成功",

"data": "bbb"

}'''

self.assertEqual(mystr, mystr2, "预期结果和实际结果不符")

if __name__=='__main__':

unittest.main()

整个代码编写思路是:先使用具体数据进行接口自动化测试,ok没有问题后,然后再编写获取mysql数据库中数据的代码,代码运行ok,能获取到数据,然后再把两个代码整合到一起,整合中考虑从数据库获取的数据怎么给到接口测试代码中。这里我们使用了对象属性的方式。

(0)

相关推荐