python中unittest+ddt的应用

一、单个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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值