• unittest 管理接口用例(数据分离-读取excel)


    1、公共模块

    ---> login.xls

    """
    common (package)
        ---> ReadFile.py
    """
    
    import xlrd
    
    class ReadExcel():
        def __init__(self,file_path,sheetx):
            self.book = xlrd.open_workbook(file_path)
            self.sheet = self.book.sheet_by_index(sheetx)
    
        def getValue(self,row_index,col_index):
            """
            获取excel单元格数据
            """
            return self.sheet.cell_value(row_index,col_index)
    
        def getCols(self):
            """
            获取有效行数
            """
            return self.sheet.ncols
    
        def getRows(self):
            """
            获取有效列数
            """
            return self.sheet.nrows
    """
    common (package)
        ---> WriteFile.py
    """
    
    import xlrd
    
    from xlutils.copy import copy
    
    def WriteExcel(filepath,sheetx,rowx,colx,value):
        """
        excel写入操作
        """
        book = xlrd.open_workbook(filepath)
        newbook = copy(book)
        sheet = newbook.get_sheet(sheetx)
        sheet.write(rowx,colx,value)
        newbook.save(filepath)
    """
    common (package)
        ---> var.py
    """
    """
    excel用例模块等变量
    """
    url = 2
    Method = 3
    header = 4
    body = 5
    test_response = 7
    result = 8
    ok = "成功"
    fail = "失败"

    2、输出testcase如下

    import requests
    import unittest
    import HTMLTestRunner
    import json
    from API_test.common.ReadFile import ReadExcel
    from API_test.common import var
    from API_test.common.WriteFile import WriteExcel
    
    class TestLogin(unittest.TestCase):
    
        def setUp(self):
            self.url = ReadExcel("D:work_docCodeFileAPI_testcommonlogin.xls", 0).getValue(1, var.url)
            self.headers = json.loads(ReadExcel("D:work_docCodeFileAPI_testcommonlogin.xls", 0).getValue(1, var.header))
    
        def test01(self):
            """
            正向用例
            """
            payload = json.loads(ReadExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0).getValue(1,var.body))
            response = requests.request("POST", self.url, headers=self.headers, json = payload)
            # 调用 WriteExcel 公共方法,将返回的报文实际结果写入到 excel 中
            WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,1,var.test_response,response.text)
            # 断言
            try:
                self.assertEqual(response.json()["msg"],"成功",msg="test01 error")
            except:
                # 调用 WriteExcel 公共方法,将结论写入到 excel 中
                WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,1,var.result,var.fail)
                # 再次断言生成测试报告,避免 try 异常处理将异常用例 pass 掉
                self.assertEqual(response.json()["msg"], "成功", msg="test01 error")
            else:
                WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,1,var.result,var.ok)
    
        def test02(self):
            """
            账号错误
            """
            payload = json.loads(ReadExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0).getValue(2,var.body))
            response = requests.request("POST", self.url, headers=self.headers, json = payload)
            WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,2,var.test_response,response.text)
            try:
                self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error")
            except:
                WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls", 0, 2, var.result, var.fail)
                self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error")
            else:
                WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,2,var.result,var.ok)
    
        def test03(self):
            """
            密码错误
            """
            payload = json.loads(ReadExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0).getValue(3,var.body))
            response = requests.request("POST", self.url, headers=self.headers, json = payload)
            WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,3,var.test_response, response.text)
            try:
                self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error")
            except:
                WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls", 0, 3, var.result, var.fail)
                self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error")
            else:
                WriteExcel("D:work_docCodeFileAPI_testcommonlogin.xls",0,3,var.result,var.ok)
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()
        testcase = [TestLogin("test01"),TestLogin("test02"),TestLogin("test03")]
        suite.addTests(testcase)
        reportfile = open("D:work_docCodeFileAPI_test\report\testreport.html", "wb")
        runner = HTMLTestRunner.HTMLTestRunner(stream=reportfile,title="TestReport",description="测试结果")
        runner.run(suite)
        reportfile.close()

    3、循环读取excel文件内的参数

    from python_API.common.ReadExcel import ReadExcel
    import requests
    import json
    import unittest
    
    class Test(unittest.TestCase):
    
        def setUp(self):
            self.url = ReadExcel("d:\dym.xls","Sheet1").getValue(1,1)
            self.Method = ReadExcel("d:\dym.xls","Sheet1").getValue(1,2)
            self.header = json.loads(ReadExcel("d:\dym.xls","Sheet1").getValue(1,3))
    
        def test01(self):
            
            #调用读取excel类中的获取行数方法getRows(),获取有效行数
            for row in range(ReadExcel("d:\dym.xls","Sheet1").getRows()):
                
                #因为第一行为标题,所以row为0时不能用来取值
                if row >=1:
                    body = json.loads(ReadExcel("d:\dym.xls","Sheet1").getValue(row,4))
                    response = requests.request(self.Method,self.url,headers=self.header,params=body)
                    if row == 1:
                        if response.json()["executeStatus"] == 0:
                            pass
                        else:
                            print ("case01 error!")
                    else:
                        if response.json()["executeStatus"] == 1:
                            pass
                        else:
                            print ("case02 error!")
    
    if __name__ == '__main__':
        unittest.main()
  • 相关阅读:
    #35 string(缩点+动态规划)
    BZOJ2744 HEOI2012朋友圈(二分图匹配)
    BZOJ2749 HAOI2012外星人(数论)
    BZOJ2743 HEOI2012采花(离线+树状数组)
    洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告
    关于图论的一些问题模型
    洛谷 P2505 [HAOI2012]道路 解题报告
    ST表
    洛谷 P4754 True Vegetable 解题报告
    洛谷 P2053 [SCOI2007]修车 解题报告
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/11877062.html
Copyright © 2020-2023  润新知