原则:
一个接口的测试,对应一个类。便于后续的框架管理
类定义:
属性:接口访问地址,和一些固定的测试数据
方法:具体的测试方法过程
一、代码实现,一组数据的接口测试:
#面向对象方法实现,注册接口测试
import requests
class register():
def __init__(self):
self.url = "http://localhost:8080/jwshoplogin/user/register.do"
self.uerinfo = {}
self.uerinfo = {
"username" :'章鱼',
"password" : '111111',
"email" : '111178@qq.com',
"phone" : '13244443333',
"question":'章鱼是什么动物',
'answer' :'鱼类'}
def test_register(self):
sess = requests.session()
response = sess.post(self.url,data=self.uerinfo).json()
print(response)
if __name__ == '__main__':
obj = register()
obj.test_register()
二、变量实现,多组数据传值:
属性不能放在初始化里,应该放在方法内部。
这里存在一个疑问:关于要传入的参数userinfo的位置。因为在方法里需要给这个参数赋值,那么这个参数应该是当前方法里的参数。
#面向对象方法实现
#用户名和邮箱的校验接口
import requests
import csv
class check_vaild():
def __init__(self):
self.url = "http://localhost:8080/jwshoplogin/user/check_vaild.do"
def test_check_vaild(self):
uerinfo = {}
with open('check_user.csv','r') as f:
reader = csv.reader(f)
for row in reader:
uerinfo['str']=row[0],
uerinfo['type']=row[1],
sess = requests.session()
response = sess.post(self.url,data=self.uerinfo).json()
print(response)
if __name__ == '__main__':
obj = check_vaild()
obj.test_check_vaild()
执行报错:
Traceback (most recent call last):
File "G:/PycharmProjects/InterFaDemo/pro_interface_obj/check_UNameEmail_obj.py", line 24, in <module>
obj.test_check_vaild()
File "G:/PycharmProjects/InterFaDemo/pro_interface_obj/check_UNameEmail_obj.py", line 19, in test_check_vaild
response = sess.post(self.url,data=self.uerinfo).json()
AttributeError: 'check_vaild' object has no attribute 'uerinfo'
错误分析:
check_vaild类没有属性uerinfo
response = sess.post(self.url,data = selef.uerinfo).json()
userinfo没有写在初始化的init里,不是check_vaild类的参数,所以不能加self。直接传参就可以
而第一个例子里,userinfo是类的初始化参数。
response = sess.post(self.url,data = uerinfo).json()
三、面向对象,脚本实现。读取csv文件测试数据,生成测试报告:
#面向对象方法实现
#用户名和邮箱的校验接口
import requests
import csv
class check_vaild():
def __init__(self):
self.url = "http://localhost:8080/jwshoplogin/user/check_vaild.do"
def test_check_vaild(self):
uerinfo = {}
f2 = open('output.csv','w')
f = open('check_user.csv','r')
reader = csv.reader(f)
next(f)
for row in reader:
uerinfo["str"]=row[0],
uerinfo["type"]=row[1],
sess = requests.session() #用requests的sessions方法,获得请求对象
response = sess.post(self.url,data = uerinfo).text #这个请求对象,调用post方法传入参数
print(response)
res = response.find(row[2])
if res>0:
f2.write(row[0]+','+row[1]+','+row[2]+','+'测试通过'+','+response+'\n')
else:
f2.write(row[0]+','+row[1]+','+row[2]+','+'测试失败'+','+response+'\n')
f2.close()
if __name__ == '__main__':
obj = check_vaild()
obj.test_check_vaild()