framworktest.py
# #试验1:使用unittest框架进行注册接口的测试
#
# #导入相关的unittest类库
# import unittest
# import requests
#
# #定义测试类,继承unittest框架
# class testregister(unittest.TestCase): #继承了unittest.TestCase这样的类对象
# #使用setup方法完成接口测试的初始化工作
# def setUp(self):
# self.url = "http://localhost:8080/jwshoplogin//user/register.do"
# self.userinfo = {"username": "程勇1",
# "password": "123456",
# "email": "[email protected]",
# "phone": "13877654567",
# "question": "喜欢读的书",
# "answer": "幸福人生"}
# #定义unittest测试方法
# def test_register(self): #命名需要是test_开头
# # 发送接口请求
# s = requests.session()
# response = s.post(self.url, data=self.userinfo).json()
# print(response)
# # result=str(response)
# # r=result.find("用户名已经存在")
# # if r>0:
# # print("注册接口测试通过")
# # else:
# # print("注册接口测试失败")
# #使用unittest框架断言来进行结果判断
# self.assertIn("用户名已经存在",str(response)) #str转换文本类型,response表示结果
#
#
#
# if __name__ == '__main__':
# unittest.main() #直接用unittest调用
# #实验二:针对检查接口通过unittest框架进行脚本实现
# #导入unittest框架类库包文件
# import unittest
# import requests
# import csv
# #
# # #定义测试类,继承unittest框架
# class testcheck(unittest.TestCase):
# #使用setup进行接口测试初始化
# def setUp(self):
# self.url = "http://localhost:8080/jwshoplogin/user/check_vaild.do"
# self.file1 = open("checkuseremailinfo.csv", "r")
# self.file2 = open("checkresult.csv", "w")
#
# #定义接口测试方法
# def test_check(self):
# # 从csv文件中获取测试数据
# checkinfo = {}
# table = csv.reader(self.file1)
# for row in table:
# checkinfo["str"] = row[0]
# checkinfo["type"] = row[1]
# print(row[0])
# s = requests.session()
# response = s.post(self.url, data=checkinfo).text
# #通过assert函数进行测试结果的判断
# self.assertIn(row[2],str(response))
#
# #通过teardown方法进行回收工作
# def tearDown(self):
# self.file1.close()
# self.file2.close()
#
# if __name__ == '__main__':
# unittest.main()
#试验3:使用unittest框架完成多个接口的测试脚本(登录,注册)
import unittest
import requests
class test_mulinterface(unittest.TestCase):
#测试初始化
def setUp(self):
print("setup")
# 定义登录测试方法
def test_case1(self):
print("登录接口")
#定义注册测试方法
def test_case2(self):
print("注册接口")
# 定义检查测试方法
def test_case3(self):
print("检查接口")
#测试回收
def tearDown(self):
print("teardown")
if __name__ == '__main__':
# 以main方法直接调用
unittest.main()
# ***************************************************
# 声明测试套对象 #测试套更灵活
suite=unittest.TestSuite()
suite.addTest(test_mulinterface("test_case3"))
#声明测试运行对象
runner=unittest.TextTestRunner()
runner.run(suite)
# ***************************************************
# 以文件的方式来进行框架的执行
# 声明文件所在路径
testdir='./'
discover=unittest.defaultTestLoader.discover(testdir,pattern='test3.py')
#声明测试运行对象
runner=unittest.TextTestRunner()
runner.run(discover)
test_updateuser.py
#*********************************************************************************
#V1.0使用一组常量对更新用户信息的脚本进行测试,使用unittest框架技术
#接口说明:
#接口访问地址:
# http://localhost:8082/user/update_information.do
#接口传入参数:
# "1、email 2、phone 3、question 4、answer
#接口预期返回结果:
#email已存在,请更换email再尝试更新 2、更新个人信息成功 3、更新个人信息失败"
#*********************************************************************************
#脚本实现:
#导入相关类库
import unittest
import requests
#定义测试类,继承unittest框架
class test_updateuser(unittest.TestCase):
#通过setup方法实现登录接口的调用
def setUp(self):
url="http://localhost:8080/jwshoplogin/user/login.do"
userinfo={"username":"程勇1",
"password":"123456"}
response=requests.post(url,data=userinfo)
self.sessionID=dict(response.cookies)['JSESSIONID'] #获取到登录后的返回值对应的sessionID,在变量名前加self这样一个指向
print(self.sessionID)
# V1.0版本,传入一组固定的测试数据,进行接口测试
def test_case1(self):
#传入指定的接口测试数据
url="http://localhost:8080/jwshoplogin/user/update_information.do"
userinfo={"phone":"13911111111",
"question":"我的生日",
"answer":"1989年5月6日"}
session={"JSESSIONID":self.sessionID}
response=requests.post(url,data=userinfo,cookies=session).text
print(response)
self.assertIn("更新个人信息成功",response)
if __name__ == '__main__':
unittest.main()
test_updateuser_v2.py
#V2.0 通过csv文件进行更新测试数据的读取
#接口说明:
#接口访问地址:
# http://localhost:8082/user/update_information.do
#接口传入参数:
# "1、email 2、phone 3、question 4、answer
#接口预期返回结果:
#email已存在,请更换email再尝试更新 2、更新个人信息成功 3、更新个人信息失败"
#*********************************************************************************
#脚本实现:
#导入相关类库
import unittest
import requests
import csv
import os
#定义测试类,继承unittest框架
class test_updateuser_v2(unittest.TestCase):
#通过setup方法实现登录接口的调用
def setUp(self):
#从csv测试数据文件中读取url和登录测试数据
path=os.getcwd()
print(path)
# p1=os.path.abspath(os.path.dirname(path)+os.path.sep+".")
# print(p1)
p2=os.path.abspath(os.path.dirname(path)+os.path.sep+".")
# print(p2)
self.fpath=p2+"\\testdatafile\ind_interface\\test_updateuser.csv"
#print(fpath)
userinfo={}
print(self.fpath)
file1=open(self.fpath,"r")
table=csv.reader(file1)
for row in table:
url=row[0]
userinfo[row[3]]=row[4]
userinfo[row[5]]=row[6]
print(userinfo)
break
response=requests.post(url,data=userinfo)
self.sessionID=dict(response.cookies)['JSESSIONID']
print(self.sessionID)
# V2.0版本,读取指定测试数据文件中对应的内容,进行接口测试
def test_case1(self):
#打开对应的文件
file1=open(self.fpath,"r")
#如何从指定行开始进行读取
table=csv.reader(file1)
userinfo={}
num=0
for row in table:
num=num+1
if num>1:
url=row[0]
# print(url)
expresult = row[1]
# print(expresult)
# print(row[2])
j=int(row[2])
for i in range(3,j*2+3,2):
userinfo[row[i]]=row[i+1]
print(userinfo)
session={"JSESSIONID":self.sessionID}
response=requests.post(url,data=userinfo,cookies=session).text
print(response)
userinfo={}
self.assertIn("更新个人信息成功",response)
if __name__ == '__main__':
unittest.main()
test_updateuser_v3.py
#v3.0 创建HTML格式的测试报告文件
#接口说明:
#接口访问地址:
# http://localhost:8082/user/update_information.do
#接口传入参数:
# "1、email 2、phone 3、question 4、answer
#接口预期返回结果:
#email已存在,请更换email再尝试更新 2、更新个人信息成功 3、更新个人信息失败"
#*********************************************************************************
#脚本实现:
#导入相关类库
import unittest
import requests
import csv
import os
from HTMLTestRunner import HTMLTestRunner
#定义测试类,继承unittest框架
class test_updateuser_v3(unittest.TestCase):
#通过setup方法实现登录接口的调用
def setUp(self):
#从csv测试数据文件中读取url和登录测试数据
path=os.getcwd()
# print(path)
# p1=os.path.abspath(os.path.dirname(path)+os.path.sep+".")
# print(p1)
p2=os.path.abspath(os.path.dirname(path)+os.path.sep+".")
# print(p2)
self.fpath=p2+"\\testdatafile\ind_interface\\test_updateuser.csv"
#print(fpath)
userinfo={}
file1=open(self.fpath,"r")
table=csv.reader(file1)
for row in table:
url=row[0]
userinfo[row[3]]=row[4]
userinfo[row[5]]=row[6]
print(userinfo)
break
response=requests.post(url,data=userinfo)
self.sessionID=dict(response.cookies)['JSESSIONID']
print(self.sessionID)
def test_case1(self):
#打开对应的文件
file1=open(self.fpath,"r")
#如何从指定行开始进行读取
table=csv.reader(file1)
userinfo={}
num=0
for row in table:
num=num+1
if num>1:
url=row[0]
# print(url)
expresult = row[1]
# print(expresult)
# print(row[2])
j=int(row[2])
for i in range(3,j*2+3,2):
userinfo[row[i]]=row[i+1]
print(userinfo)
session={"JSESSIONID":self.sessionID}
response=requests.post(url,data=userinfo,cookies=session).text
print(response)
userinfo={}
self.assertIn("更新个人信息成功",response)
if __name__ == '__main__':
#unittest.main()
path = os.getcwd()
p2 = os.path.abspath(os.path.dirname(path) + os.path.sep + ".")
filename=p2+"\\testresultfile\ind_interface\\test_updatauser_report.html" #为了打印出斜杠,需要用2个斜杠表示
#以wb的方式打开文件
file=open(filename,"wb")
#加载测试套
suite=unittest.TestSuite()
suite.addTest(test_updateuser_v3("test_case1"))
#定义测试报告文件
#调用HTML测试报告的报告生成测试报告
runner=HTMLTestRunner(stream=file,title="更新用户接口测试",description="接口测试报告")
runner.run(suite)
file.close()
test_register.py
#以unittest框架的方式进行脚本的改写
import unittest
import requests
#定义测试类,继承unittest框架
class test_register(unittest.TestCase):
#定义属性,一般是定义在类的初始化方法中
def setUp(self):
self.url="http://localhost:8080/jwshoplogin//user/register.do"
self.userinfo={"username":"程勇5",
"password":"123456",
"email":"[email protected]",
"phone":"13877654567",
"question":"喜欢读的书",
"answer":"幸福人生"}
def test_case1(self):
s=requests.session()
response=s.post(self.url,data=self.userinfo).json()
print(response)
if __name__ == '__main__':
unittest.main()
test_runner_v1.py
#测试框架驱动程序V1.0版本
#只是从配置文件中读取一个脚本文件进行调用
import unittest
import csv
if __name__ == '__main__':
#指定对应的脚本路径,从csv文件中读取相关路径和文件名
file=open("D:\python\interfacefram\config\config1.csv","r")
table=csv.reader(file)
num=0
for row in table:
#v3.0增加脚本的执行状态
if num>0 and row[2]=="Yes":
testdir=row[0]
fname=row[1]
print(testdir,fname)
# testdir="D:\python\interfacefram\script\ind_interface"
discover=unittest.defaultTestLoader.discover(testdir,pattern=fname)
#定义一个运行对象
runner=unittest.TextTestRunner()
runner.run(discover)
num=num+1
test_runner_v2.py
#*************************V4.0驱动脚本程序*************************************************
import unittest
import csv
import operator
if __name__ == '__main__':
#打开对应的配置文件,进行读取
#以只读方式打卡
file=open("D:\python\interfacefram\config\config1.csv","r")
table=csv.reader(file)
# line=len(open("D:\python\interfacefram\config\config1.csv").readlines())
# print(line)
dic={}
listd=[]
line=0
for row in table:
#print(row[0])
if line>0:
#把文件中读取的数据放入字典
dic={}
dic[row[1]]=row[0]
dic["num"]=int(row[3])
dic["state"]=row[2]
# print(dic)
line=line+1
if dic!={}:
listd.append(dic)
print("n行数=",line)
# print(listd)
dicn=sorted(listd,key=operator.itemgetter("num"))
print(dicn)
for i in range(0,line-1):
n=0
for content in dicn[i].items():
if n==0 :
fname=content[0]
fdir=content[1]
print("fname",fname," fdir",fdir)
#调用脚本程序进行执行
discover = unittest.defaultTestLoader.discover(fdir, pattern=fname)
# 定义一个运行对象
runner = unittest.TextTestRunner()
runner.run(discover)
n=n+1
file=open("D:\python\interfacefram\config\config1.csv","r")
table=csv.reader(file)
# line=len(open("D:\python\interfacefram\config\config1.csv").readlines())
# print(line)
dic={}
listd=[]
line=0
for row in table:
#print(row[0])
if line>0:
#把文件中读取的数据放入字典
dic={}
dic[row[1]]=row[0]
dic["num"]=int(row[3])
test_runner_v3.py
#V5.0 把所有配置文件中的内容全部进行读取
import unittest
import csv
import operator
if __name__ == '__main__':
#打开对应的配置文件,进行读取
#以只读方式打卡
file=open("D:\python\interfacefram\config\config1.csv","r")
table=csv.reader(file)
# line=len(open("D:\python\interfacefram\config\config1.csv").readlines())
# print(line)
dic={}
listd=[]
line=0
for row in table:
#print(row[0])
if line>0:
#把文件中读取的数据放入字典
dic={}
dic[row[1]]=row[0]
dic["num"]=int(row[3])
#把脚本运行状态加入字典数据
dic["state"]=row[2]
# print(dic)
line=line+1
if dic!={}:
listd.append(dic)
print("n行数=",line)
# print(listd)
dicn=sorted(listd,key=operator.itemgetter("num"))
# print(dicn)
for i in range(0,line-1):
n=0
for content in dicn[i].items():
if n==0 :
#print(content)
fname=content[0]
fdir=content[1]
# print("fname",fname," fdir",fdir)
if n==2:
#print(content)
state=content[1]
# print("state",state)
if state=="Yes":
#调用脚本程序进行执行
print("最终运行的程序",fname)
discover = unittest.defaultTestLoader.discover(fdir, pattern=fname)
# 定义一个运行对象
runner = unittest.TextTestRunner()
runner.run(discover)
n=n+1
总结
标签:__,框架,self,接口,test,print,unittest,联调,row From: https://www.cnblogs.com/zhangyideyl/p/17131034.html