首页 > 其他分享 >接口框架联调

接口框架联调

时间:2023-02-20 20:01:19浏览次数:38  
标签:__ 框架 self 接口 test print unittest 联调 row

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 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

相关文章

  • Java学习笔记----关于集合框架
    集合框架的概述集合、数组都是多个数据进行存储操作的结构,简称java容器说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储数组在存储多个数据方面的特点一......
  • 这个插件可以实现代码零入侵自动生产接口文档。
    每个开发都不想写文档。当你不想写接口文档时,可以通过安装插件在IDEA里实现自动同步,一边写代码一边同步接口文档给你的前端、测试同学。以下内容手把手教你怎么操作(这里仅......
  • Map接口的使用
    packageedu.wtbu;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;publicclassDemo01{publicstaticvoidmain(String[]args){//......
  • 1688商品列表数据采集接口(商品销量,商品属性接口,商品优惠券接口)代码展示
    简介:item_search-按关键字搜索商品接口,调用该接口可以拿到商品ID,商品标题,商品优惠券,商品到手价,商品价格,商品优惠价,商品sku属性,商品图片,商品视频,商品sku属性图片,商品属性描述......
  • python之路73 vue框架 vue-cli创建项目、vue项目目录介绍、es6导入导出语法、登录功
    vue-cli创建项目前端做成项目---》使用工具(vue-cli),创建vue项目,单页面应用(spa),组件开发,把xx.vue,ts,saas,less---》编译---》在浏览器中执行vue-cli创建项目开发,在项......
  • 前端从接口的header中获取filename
    getFileNameFromHeaders=(headers)=>{constdisposition=headers['content-disposition']letfileName='未命名'try{fileName=disposition.split......
  • 拼多多商品列表数据采集接口代码展示
    简介:item_search-根据关键词取商品列表接口,调用该接口可以拿到商品ID,商品标题,商品优惠券,商品到手价,商品价格,商品优惠价,商品sku属性,商品图片,商品视频,商品sku属性图片,商品属性......
  • 1688商品详情数据接口代码展示
    简介:item_get-获得1688商品详情接口,利用该接口可以拿到商品ID,商品标题,商品优惠券,商品到手价,商品价格,商品优惠价,商品sku属性,商品图片,商品视频,商品sku属性图片,商品属性描述,商......
  • API接口聚全,价监控,订单接口,json格式数据
    行业背景:电商行业数据分析api接口,品牌监控api接口,商品价格监控api接口,电商数据采集,对品牌和电商企业推出的的数据分析产品,致力于帮助品牌方全面掌握市场行情和趋势,定位竞争......
  • 框架源码 -- spring aware
    框架源码–springawarebean实现了Aware系列接口可以访问Spring容器,其中涉及到bean的创建过程,其中包括BeanNameAware,BeanFactoryAware,ApplicationContextAware都有参与b......