python3 unittest+request+HTMLTestRunner接口自动化(三)

(7)之前的文章已经把该需要的都封装好了,现在呢。我们就要来读取Excel文件了哦,按行读取就行。Python自带的paramunittest会自动识别用例的(#paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例),好啦,我们开始看代码,读取Excel代码如下:readExcel.py

caselist.xlsx文档我的内容是这样的,当然你们可以按照自己测试的接口文档来更改,第一行的用例名(case_name),方法(method),接口路径(path)以及接口请求需要带的参数(data)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/11/8 16:25
# @Author :xx
# @Site : 
# @File : test11.py
# @Software: PyCharm

#读取Excel的方法
import xlrd
import os
import json
import csv
from testFile import getpathInfo


#实例化路径,获取当前路径C:\Users\xxxxx\PycharmProjects\interfaceTest\testFile
path = getpathInfo.get_path()

class readExcel():
    # xls_name填写用例的Excel名称 sheet_name该Excel的sheet名称
    def get_xls(self,xls_name,sheet_name):#获取Excel数据
        #定义存入接口用例
        cls=[]
        #获取用例的文件路径,C:\Users\xxxxx\PycharmProjects\interfaceTest\testFile/caselist.xlsx
        xlspath = os.path.join(path,xls_name)
        # print("xlspath值为:",xlspath)
        file = xlrd.open_workbook(xlspath) #打开用例的excel
        sheet = file.sheet_by_name(sheet_name)#获得打开Excel的sheet
        nrows=sheet.nrows #获取sheet的行数

        for i in range(nrows):#根据行数来循环获取Excel的数据并存入cls
            if sheet.row_values(i)[0] != 'case_name': #如果cls中不存在case_name(用例),那么我们把这行的数据添加到cls[]中,row_values(i)[0]取值是第一列的case_name下的值
                cls.append(sheet.row_values(i))

        return cls


if __name__ == '__main__':#测试一下看看是否通过
    x=readExcel()
    print(x.get_xls("caselist.xlsx","Flash"))#输出sheet(Flash)表格中的内容
    print(x.get_xls('caselist.xlsx', 'Flash')[0][1])#输出第0行第1个数据,列表从0开始的


(8)我们已经把Excel中的数据读取出来了,接下来我们就来运行case啦。

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/11/8 16:25
# @Author : xxx
# @Site : 
# @File : test11.py
# @Software: PyCharm

#读取caselist.xlsx中的用例,使用unittest来进行断言校验
#unittest断言测试case了
import json
import unittest

import paramunittest
from common import configHttp
# from testFile import get_token
from testFile import geturlParams
from testFile import readConfig
from testFile import readExcel
import urllib.parse
from testFile import get_token

#paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
# import paramunittest
from ddt import ddt,data,unpack


url = geturlParams.geturl_Now().get_url() #调用我们的geturlParams获取我们拼接的URL
get_token=get_token.get_token()#实例化获取登录凭证
print(url)
#读取Excel中的内容。获得列表数据,列表里的每一组就是一个用例
caselist_xls = readExcel.readExcel().get_xls('caselist.xlsx','Flash')
# print(caselist_xls)

#参数化获取的Excel数据
@paramunittest.parametrized(*caselist_xls) #列表里的每一组就是一个用例
class testFlash(unittest.TestCase):
    def setParameters(self, case_name, method,path, data): 
        #初始化参数,参数位置也要与Excel对应哦
        """
        set params
        :param case_name:
        :param path
        :param data
        :param method
        :return:
        """
        self.case_name = case_name
        self.path = path
        self.data= data
        self.method=method

    def description(self):
        self.case_name


    def setUp(self):
        print(self.case_name+"测试开始前准备")

    def tearDown(self):
        print("测试结束,输出log完结\n\n")

    def test01case(self):
        self.checkResult()

    def checkResult(self):#断言
         """
        check test result
        :return:

        """
         new_url = url+ self.path
         # print(new_url)
         # print(self.method)
         # print(self.data)
         # print(self.get)
         info = configHttp.Run_http().run_http(self.method, new_url, self.data,get_token)
         # print(info)
         ss=json.loads(info)## 将响应转换为json字典格式
         if self.case_name is not None:
             self.assertEqual(ss['msg'], "成功")  # 返回的msg应该是成功就合法。也可以用code状态码判断
             print(self.case_name + "接口请求执行成功")
         else:
             print(self.case_name + "接口请求执行失败")









 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值