VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 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_doc\CodeFile\API_test\common\login.xls", 0).getValue(1, var.url)
        self.headers = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0).getValue(1, var.header))

    def test01(self):
        """
        正向用例
        """
        payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(1,var.body))
        response = requests.request("POST", self.url, headers=self.headers, json = payload)
        # 调用 WriteExcel 公共方法,将返回的报文实际结果写入到 excel 中
        WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.test_response,response.text)
        # 断言
        try:
            self.assertEqual(response.json()["msg"],"成功",msg="test01 error")
        except:
            # 调用 WriteExcel 公共方法,将结论写入到 excel 中
            WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.result,var.fail)
            # 再次断言生成测试报告,避免 try 异常处理将异常用例 pass 掉
            self.assertEqual(response.json()["msg"], "成功", msg="test01 error")
        else:
            WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.result,var.ok)

    def test02(self):
        """
        账号错误
        """
        payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(2,var.body))
        response = requests.request("POST", self.url, headers=self.headers, json = payload)
        WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,2,var.test_response,response.text)
        try:
            self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error")
        except:
            WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0, 2, var.result, var.fail)
            self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error")
        else:
            WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,2,var.result,var.ok)

    def test03(self):
        """
        密码错误
        """
        payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(3,var.body))
        response = requests.request("POST", self.url, headers=self.headers, json = payload)
        WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,3,var.test_response, response.text)
        try:
            self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error")
        except:
            WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0, 3, var.result, var.fail)
            self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error")
        else:
            WriteExcel("D:\work_doc\CodeFile\API_test\common\login.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_doc\CodeFile\API_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()
复制代码
作者:多测师特聘讲师_郑sir
 
出处:https://www.cnblogs.com/ZhengYing0813/


相关教程