老黄历单元测试方法--》通过超继承,通过ddt装饰器

HTTP请求类

import requests

import unittest

#1:利用6-12号写的excel数据读取类以及6月9号写的HTTP单元测试类, # 完成老黄历的单元测试,且输出测试报告。 # (注意是要从Excel里面获取测试 数据哦~并且把测试结果写回到Exc


class Http_request():
    def __init__(self,url,param):
        self.url=url
        self.param=param


    def get_py(self,method):


        try:
            if method.upper()=="GET":
                resp=requests.get(self.url,self.param)
            elif method.upper()=="POST":
                resp=requests.post(self.url,self.param)
            else:
                print("")
            return resp.json()


        except AssertionError as e:
            print("%s"%e)


if __name__=="__main__":
    http=Http_request("http://v.juhe.cn/laohuangli/d",{'date':'2018-09-11','key':''})

    print(http.get_py("get"))


Excel读写测试用例类

class Get_Data:
    def __init__(self,filepath,sheetname):
        self.filepath=filepath
        self.sheetname=sheetname


    def read_data(self):
        loads=load_workbook(self.filepath)
        sheet=loads[self.sheetname]
        list_2=[]
        for row in range(2,sheet.max_row+1):
            list_1=[]
            for column in range(1,7):
                list_1.append(sheet.cell(row,column).value)
            list_2.append(list_1)
        return list_2


    def write_data(self,rows,act,res):
        loads=load_workbook(self.filepath)
        sheet=loads[self.sheetname]
        sheet.cell(rows,7).value=act
        sheet.cell(rows,8).value=res
        loads.save(self.filepath)


if __name__=="__main__":
    data=Get_Data("test_data.xlsx","test_data")
    result=data.read_data()
    print(result)


    print(eval("result[0][4]"))


测试类代码:

import  unittest
import time
import HTMLTestRunnerNew


from  openpyxl import load_workbook
from class_614.work_http import Http_request
from class_614.work_excel import Get_Data




class Test_Http_request(unittest.TestCase):
    def setUp(self):
        self.data=Get_Data("test_data.xlsx","test_data")
        print("test is begin")


    def __init__(self,url,param,method,expect,caseid,methodName='runTest'):
        super(Test_Http_request,self).__init__(methodName)
        self.url=url
        self.param=param
        self.method=method
        self.expect=expect
        self.caseid=caseid




    def test_http(self):


            # for i in  range(len(self.data)):
            #     url=self.data[i][3]
            #     param=eval(self.data[i][4])
            #     method=self.data[i][2]
            #     https=Http_request(url,param).get_py(method)
            print("执行的是第",self.caseid,"几条用例")
            https=Http_request(self.url,self.param).get_py(self.method)


            try:
                self.assertEqual(self.expect,https["reason"])
                result='pass'


            except AssertionError as e:
                print("报错了%s"%e)
                result='fail'
                raise e
    #写入数据
            self.data.write_data(self.caseid+1,str(https),result)




    def tearDown(self):
         print("test is end")


测试用例执行代码

import unittest
import time
import HTMLTestRunnerNew
from class_614.work_test import Test_Http_request
from class_614.work_excel import Get_Data


data=Get_Data("test_data.xlsx","test_data").read_data()


suite=unittest.TestSuite()


for i in range(len(data)):
    url=data[i][3]
    param=eval(data[i][4])
    method=data[i][2]
    expect=data[i][5]
    print(expect)
    caseid=data[i][0]
    suite.addTest(Test_Http_request(url,param,method,expect,caseid,'test_http'))




#loads=unittest.TestLoader()
#suite.addTests(loads.loadTestsFromTestCase(Test_Http_request))


now=time.strftime('%Y-%m-%d_%H_%M_%S')
file_path='test'+now+'.html'




with open(file_path,"wb") as file:
    runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2,title=None,description="老黄历的单元测试",tester="五月")
    runner.run(suite)











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值