一、初级
a、请求函数
import requests
class HttpRequest():
def http_request(self, url, data, method, cookie=None):
#将字符串中的大写转换成小写
if method.lower() == "get":
# verify=False忽略证书 ssl
res = requests.get(url, data, cookies=cookie, verify=False)
return res
elif method.lower() == "post":
res = requests.post(url, data, cookies=cookie, verify=False)
return res # 返回的是一个消息实体
else:
raise Exception('不支持的请求')
b、测试用例
import unittest
from testcase_01.test_http import HttpRequest
class TestHttpRequest(unittest.TestCase):
#参数抽象化
def __init__(self,url,data,http_method,methodName):
#超继承
super(TestHttpRequest, self).__init__(methodName)
self.url = url
self.data = data
self.http_method = http_method
def setUp(self):
print("我要开始测试了")
def test_login(self): # 测试正常的登录
res = HttpRequest().http_request(self.url, self.data, self.http_method)
#json格式转换 HTML类型的数据不能转换成json格式
# temp_res=json.loads(res.text)
print("测试请求的结果是:{0}"+res.text)
# jsonobj = json.loads(res.text)#获取到的返回数据使用text方法来获取
# toCntPercent = jsonobj['url']['Data']#从Json对象获取想要的内容
# print(toCntPercent)
def tearDown(self):
print("我已经结束测试了")
c、测试套
import unittest
from testcase_01.test_case import TestHttpRequest
#收集用例TestSuite
my_suite = unittest.TestSuite()
loader=unittest.TestLoader()#用例加载器
url = "https://passport.csdn.net/login"
#正常登录的数据
data_normal = {
'pwdOrVerifyCode': "密码",
'userIdentification': "账户"
}
#错误密码登录的数据
data_errpwd = {
'pwdOrVerifyCode': "密码",
'userIdentification': "账户"
}
my_suite.addTest(TestHttpRequest(url,data_normal,'get','test_login'))
my_suite.addTest(TestHttpRequest(url,data_errpwd,'post','test_login'))
#执行用例
runner = unittest.TextTestRunner()
runner.run(my_suite)
二、中级版
a、请求函数(同上)
b、测试用例(同上)
c、测试套
import unittest
from testcase_01.test_case import TestHttpRequest
#收集用例TestSuite
my_suite = unittest.TestSuite()
loader=unittest.TestLoader()#用例加载器
#所有数据创建在一个列表里面
#把存入Excel里面的数据 拿出来 做成这种形式
test_data = [{
'url': "https://passport.csdn.net/login",
'data': {
'pwdOrVerifyCode': "密码",
'userIdentification': "账户"
},
'http_method': 'get',
'title': '正常登录'
},
{
'url': "https://passport.csdn.net/login",
'data': {
'pwdOrVerifyCode': "密码",
'userIdentification': "账户"
},
'http_method': 'post',
'title': '输入错误的密码登录'
},
]
for item in test_data:
print("正在执行的用例是:{0}".format(item['title']))
my_suite.addTest(TestHttpRequest(item['url'],item['data'],item['http_method'],'test_login'))
# 执行用例
runner = unittest.TextTestRunner()
runner.run(my_suite)
三、针对大量测试用例时(存入excel中)
a、请求函数(同上)
b、使用excel编写接口测试用例
c、读取excel数据
from openpyxl import load_workbook
# 相对路径 绝对路径
# 打开工作簿
class DoExcel:
def get_data(self, file_name, sheet_name):
# wb=load_workbook("../testcase_03/test.xlsx")
wb = load_workbook(file_name)
sheet = wb[sheet_name]
test_data = []
for i in range(2, sheet.max_row + 1):
row_data = {}
row_data['case_id'] = sheet.cell(i, 1).value
row_data['url'] = sheet.cell(i, 2).value
row_data['data'] = sheet.cell(i, 3).value
row_data['title'] = sheet.cell(i, 4).value
row_data['http_method'] = sheet.cell(i, 5).value
test_data.append(row_data)
return test_data
def write_back(self,file_name,sheet_name,i,value,j=6): # 专门写回数据
wb=load_workbook(file_name)
sheet=wb[sheet_name]
sheet.cell(i,j).value=value
wb.save(file_name)
if __name__ == '__main__':
res=DoExcel().get_data("D:\PycharmProjects\class_01\\testcase_03\\test.xlsx",'sheet1')
print(res)
d、运行函数
from testcase_03.http_request import HttpRequest
from testcase_03.do_excel import DoExcel
def run(test_data): # 传入列表嵌套字典的数据格式进来
for item in test_data[0:5:1]:
print("正在测试的用例是{0}".format(item['title']))
res = HttpRequest().http_request(item["url"], str(item["data"]), item["http_method"])
print("请求的结果是:{0}".format(res.json()))
DoExcel().write_back(r"D:\PycharmProjects\class_01\\testcase_03\\test.xlsx", 'Sheet1', item['case_id']+1,
str(res.json()))
test_data = DoExcel().get_data(r"D:\PycharmProjects\class_01\\testcase_03\\test.xlsx", 'Sheet1')
run(test_data)
四、拓展----python方法(method)
a.reverse() 只可以把list倒过来
a.lower() 将字符串中的大写字母变成小写字母
a.upper() 将字符串中的小写字母变成大写字母
remove() set中删除
add() set中加入元素
insert() list中插入元素
append() 在list末尾插入 append 不可以用于NoneType
pop() 删除list 或者dict中元素
str.capitalize()返回的字符串只有它的第一个字符大写的副本
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
rm为空则为空格