一、单个EXCEL执行
import unittest
from class_api_login_topup.demo import http_request
from class_api_login_topup.http_attr import Get_Attr # 反射的值
from ddt import ddt, data, unpack
from class_demo_login_topup.http_excel import HttpExcel # 读取excel的值
test_data = HttpExcel('test_api.xlsx', 'python').real_excel()
# test_data = [] 遍历 测试用例
# t = HttpExcel('test_api.xlsx', 'python').real_excel()
# for i in range(len(t)):
# if i % 2 == 0:
# test_data.append(t[i])
@ddt
class Login_Http(unittest.TestCase):
@data(*test_data)
def test_api(self, item): # 正常登录
res = http_request().request(item['url'], eval(item['data']), item['method'], getattr(Get_Attr, 'cookies'))
if res.cookies:
setattr(Get_Attr, 'cookies', res.cookies)
try:
self.assertEqual(str(item['expected']), res.json()['code'])
except AssertionError as e:
print("test_api's, error is {0}", format(e))
raise e
print(res.json())
执行文件:
import unittest
import HTMLTestRunner
suite = unittest.TestSuite()
loader = unittest.TestLoader()
from class_demo_login_topup import http_tools_1
suite.addTest(loader.loadTestsFromModule(http_tools_1)) # 对整个文件执行
with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file:
runner = unittest.TextTestRunner(stream=file, verbosity=2)
runner.run(suite)
生产http_TestCase.txt的文件,后者生产:html格式
with open('Test_Case.html', 'wb') as file:
runner = HTMLTestRunner.HTMLTestRunner(stream=file, verbosity=0,
title=None, description=None)
runner.run(suite)
其中Excel中的数据是这样的:
# 实现第一种遍历 全部参数化
# 列表里面嵌套了字典
test_data = [{
'url': 'http://test.lemonban.com/futureloan/mvc/api/member/login',
'data': {
'mobilephone': '13972136808', 'pwd': '123456'}, 'expected': '10001', 'method': 'get'},
{
'url': 'http://test.lemonban.com/futureloan/mvc/api/member/login',
'data': {
'mobilephone': '13972136808', 'pwd': '12345678'}, 'expected': '20111', 'method': 'get'},
{
'url': 'http://test.lemonban.com/futureloan/mvc/api/member/recharge',
'data': {
'mobilephone': '13972136808', 'amount': '1000'}, 'expected': '10001', 'method': 'post'},
{
'url': 'http://test.lemonban.com/futureloan/mvc/api/member/recharge',
'data': {
'mobilephone': '13972136808', 'amount': '-100'}, 'expected': '20117', 'method': 'post'}]
# 利用excel去遍历
from openpyxl import load_workbook
class HttpExcel:
def __init__(self, excel_name, sheet_name):
self.excel_name = excel_name
self.sheet_name = sheet_name
def real_excel(self): # real_excel(self, mode='all'):
mode = FileConfig().config('do_config', 'MODE', 'mode') # 遍历 1 3 登录和充值两条用例
wb = load_workbook(self.excel_name)
sheet = wb[self.sheet_name]
test_data = []
for i in range(1, sheet.max_row + 1