首先介绍一下python的requests模块:
requests的使用介绍:requests快速入门
环境说明:WIN7,64位Python3Requests—>pipinstallrequestsUnit量化接口,test—>unit量化接口,test框架是python自带的单元测试框架,python1及其以后的版本已将unit量化接口,test作为一个标准块放入python开发包中,所以unit量化接口,test不用单独安装。测试报告利用HTMLTestRunner生成。
测试思路:先把每个http接口一个一个写脚本测试。写完所有接口的测试脚本后,由于一个接口有好几个测试用例,所有要把同一个接口的py脚本封装成方法,每一个接口封装成一个接口类。用量化接口,testsuite直接调用这些接口类,构造测试集;或利用unit量化接口,test自动识别测试用例,TestLoader类中提供的discover方法。就好把所有的接口测试用例连起来构建自动化测试了。最后利用HTMLTestRunner生成测试报告。
PUT:上传指定的URL,一般是修改,可以理解为数据库中的update。DELETE:删除指定资源。在接口测试中,一般来说,post创建数据,get获取创建成功后的所有数据和指定的数据,put可以对创建成功后的数据进行修改,delete是指定的资源。
单个接口测试例子:post
import requests
import json
def get_token():
url1 = 'https://**********/Token/get'
content = {'appId':'***','appSecret':'******'}
web = requests.get(url=url1,params=content)
print(web.url)
print(web.text)
ty = web.text
a = json.loads(ty)
b = a.get('Data')
apptoken = b.get('Token')
return apptoken
if __name__ == '__main__':
get_token()
get
import requests
import json
def 量化接口,test_qualification_add():
url = 'http://xxx.xxx.xxx/audit/api/xxx/get' #测试的接口url
headers = {'Content-Type':'application/json'}
data = { #接口传送的参数
'token': 'abcdefg',
'id': 1,
'param': {
'QuId':1
}
}
r = requests.post(url = url,json = data,headers = headers) #发送请求
#return r.json
print (r.text) #获取响应报文
print (r.status_code)
if __name__=='__main__':
量化接口,test_qualification_add()
其中requests.post和requests.request两种写法,都可以实现请求。
在进行接口测试的过程中对传入的参数进行边界值测试、错误推导测试、等价类测试等测试方法进行测试。那么一个接口就要设很多测试用例。
下面是封装为接口类的例子:
import requests
import json
import unit量化接口,test
class MyTest(unit量化接口,test.TestCase): #封装测试环境的初始化和还原的类
def setUp(self): #放对数据可操作的代码,如对mysql、momgodb的初始化等,这里不对数据库进行操作!
print('start 量化接口,test')
pass
def tearDown(self): #与setUp()相对
print('end 量化接口,test')
pass
class 量化接口,test_xxx_get(MyTest): #把这个接口封装一个类,下面的方法是具体的测试用例
'''接口名称:获取资质''' #这个描述接口名称
def 量化接口,test_xxx_get(self):
'''测试用例1:哈哈''' #这个描述接口用例名称
self.url = 'http://xxx.xxx.xxx/audit/api/xxx/get' #请求url
self.headers = {'Content-Type':'application/json'}
self.data = { #请求参数
'token': 'abcdefg',
'id': 1,
'param': {
'QuId': 14
}
} #self.用在方法属性中,表示是该方法的属性,不会影响其他方法的属性。
r = requests.post(url = self.url,json = self.data,headers = self.headers)
#return r.json()
print (self.r.text)
print (self.r.status_code)
self.assertIn('true',self.r.text) #断言判断接口返回是否符合要求,可以写多个断言!
if __name__=='__main__':
unit量化接口,test.main()
unit量化接口,test提供了全局的main()方法,使用它可以方便的将一个单元测试木块变成可以直接运行的测试脚本;main()方法使用TestLoader类来搜索所有包含在该木块中以“量化接口,test”命名开头的测试方法,并自动执行它;
执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。所以每一个接口类、测试用例要以量化接口,test*命名,如下:
run量化接口,test.py写法:
import unit量化接口,test
import json
import requests
from HTMLTestRunner import HTMLTestRunner
import time
#加载测试文件 (有几多个接口就加载几多个,一个一个加进来)
import 量化接口,test_creative_add
import 量化接口,test_creative_get
import 量化接口,test_qualification_add
import 量化接口,test_qualification_get
import 量化接口,test_qualification_reflesh
#构造测试集
suite = unit量化接口,test.TestSuite() #实例化
#TestSuite类的addTest()方法把不同测试类中的测试方法组装到测试套件中。
#增加测试用例==》接口文件名.接口类(方法也就是这个接口的其他用例),要把每一个测试用例都增加进来!!!
suite.addTest(量化接口,test_creative_add.量化接口,test_creative_add('量化接口,test_creative_add')) #增加创意
suite.addTest(量化接口,test_creative_get.量化接口,test_creative_get('量化接口,test_creative_get')) #获取创意
suite.addTest(量化接口,test_qualification_add.量化接口,test_qualification_add('量化接口,test_qualification_add'))#增加资质
suite.addTest(量化接口,test_qualification_get.量化接口,test_qualification_get('量化接口,test_qualification_get'))#获取资质
suite.addTest(量化接口,test_qualification_reflesh.量化接口,test_qualification_reflesh('量化接口,test_qualification_reflesh'))#更新资质
if __name__=='__main__':
量化接口,testunit = unit量化接口,test.TestSuite()
量化接口,testunit.addTest(suite)
#按照一定的格式获取当前的时间
now = time.strftime('%Y-%m-%d %H_%M_%S')
#定义报告存放路径
filename = './' + now + '量化接口,test_result.html'
fp = open(filename,'wb')
#定义测试报告
runner = HTMLTestRunner(stream = fp,
title = 'xxx接口测试报告',
description = '测试用例执行情况:')
#运行测试
runner.run(量化接口,testunit)
fp.close() #关闭文件对象把数据写进磁盘
run量化接口,testpy写法:
整合自动化测试发送测试报告:run量化接口,test_maipy
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点