zoukankan      html  css  js  c++  java
  • 接口自动化之ddt

    接口自动化会用到数据驱动模式,也就是一个ddt模块

    目录

    1、环境准备

    2、调用时标准格式

    3、应用(结合excle来传值)

    1、环境准备

    首先,需要安装ddt模块

    pip install ddt

    2、调用时标准格式

    在类下面如下写上:@ddt.ddt

    在调用的方法下面需要写上:@ddt.data(需要传入的多组数据)

    3、应用(结合excle来传值)

    第一步:写一个excle取数据方法:

    # coding:utf-8
    
    import xlrd
    class ExcelUtil():
        def __init__(self,exclePath,sheetName="sheet1"):
            self.data=xlrd.open_workbook(exclePath)
            self.table=self.data.sheet_by_name(sheetName)
            #获取第一行作为key值
            self.keys=self.table.row_values(0)
            #获取总行数
            self.rowNum=self.table.nrows
            #获取总列数
            self.colNum=self.table.ncols
    
        def dict_data(self):
            if self.rowNum<=1:
                print ("总行数小于1")
            else:
                r=[]
                j=1
                for i in list(range(self.rowNum-1)):
                    s={}
                    #从第二行取对应value值
                    s['rowNum']=i+2
                    values=self.table.row_values(j)
                    for x in list(range(self.colNum)):
                        s[self.keys[x]]=values[x]
                    r.append(s)
                    j+=1
                return  r  #返回的是excle的每一行的值
    
    #调试一下,上面函数是否正确
    if __name__ =="__main__":
        filepath ="D:\1.xlsx"
        sheetName="Sheet1"
        data=ExcelUtil(filepath,sheetName)
        print(data.dict_data())

    第二步:写一个接口模块,一个case模块

    第三步:在case模块中使用ddt模块、接口模块,来使用excle传入参数值

    # coding:utf-8
    
    import requests
    import unittest
    import ddt
    import readexcle1
    import login01
    
    #excle放在文件下,就可以直接只写文件名
    d=readexcle1.ExcelUtil("D:\1.xlsx", sheetName="Sheet1") #带上模块名,不然会报错
    data1 = d.dict_data()
    
    @ddt.ddt
    class Test(unittest.TestCase):
        def setUp(self):
            self.s = requests.session()
    
    #在这一步,就会取每一行的数据进行用例的执行
        @ddt.data(*data1)
        def test_(self, A):  #通过参数A,来取列表的每一行的每一个值
            # print("测试用例数据:%s"%aaaa)
            user = A['user']  
            password = A['password']
            q=login01.Login01()
            result =q.login01(user, password)
            # print(result)
            login_result = login01.is_login_sucess(result)
            # print("实际结果:%s" % login_result)  # 实际结果 bool
            expect = A['expect']   # 取文件中的True和用例跑出来的True对比,做期望值
            # print str(login_result)
            self.assertTrue(str(login_result) == expect)   #实际结果为bool值,转成字符串与期望结果做对比
    
    if __name__ == "__main__":
        unittest.main()
    

      

  • 相关阅读:
    Java构造方法之间的调用
    JavaNote
    微信小程序-智能机器人
    微信小程序-今日头条案例
    微信小程序-记账本
    51job爬虫
    Xcode文件目录选中变成白色, 解决方案
    Mac通过以太网共享网络
    Mac系统Safari浏览器启动无图模式
    iOS9.0之后不支持http请求解决方案
  • 原文地址:https://www.cnblogs.com/weizhideweilai/p/9465089.html
Copyright © 2011-2022 走看看