25、测试套中加载测试用例

一、初级

a、请求函数

import requests

class HttpRequest():
    def http_request(self, url, data, method, cookie=None):
        #将字符串中的大写转换成小写
        if method.lower() == "get":
            # verify=False忽略证书  ssl
            res = requests.get(url, data, cookies=cookie, verify=False)
            return res
        elif method.lower() == "post":
            res = requests.post(url, data, cookies=cookie, verify=False)
            return res  # 返回的是一个消息实体
        else:
            raise  Exception('不支持的请求')

b、测试用例

import unittest


from testcase_01.test_http import HttpRequest


class TestHttpRequest(unittest.TestCase):
    #参数抽象化
    def __init__(self,url,data,http_method,methodName):
        #超继承
        super(TestHttpRequest, self).__init__(methodName)
        self.url = url
        self.data = data
        self.http_method = http_method

    def setUp(self):
        print("我要开始测试了")

    def test_login(self):  # 测试正常的登录
        res = HttpRequest().http_request(self.url, self.data, self.http_method)
        #json格式转换  HTML类型的数据不能转换成json格式
        # temp_res=json.loads(res.text)
        print("测试请求的结果是:{0}"+res.text)

        # jsonobj = json.loads(res.text)#获取到的返回数据使用text方法来获取
        # toCntPercent = jsonobj['url']['Data']#从Json对象获取想要的内容
        # print(toCntPercent)

    def tearDown(self):
        print("我已经结束测试了")

c、测试套

import unittest
from testcase_01.test_case import TestHttpRequest
#收集用例TestSuite
my_suite = unittest.TestSuite()

loader=unittest.TestLoader()#用例加载器

url = "https://passport.csdn.net/login"
#正常登录的数据
data_normal = {
    'pwdOrVerifyCode': "密码",
    'userIdentification': "账户"
}
#错误密码登录的数据
data_errpwd = {
    'pwdOrVerifyCode': "密码",
    'userIdentification': "账户"
}

my_suite.addTest(TestHttpRequest(url,data_normal,'get','test_login'))
my_suite.addTest(TestHttpRequest(url,data_errpwd,'post','test_login'))
#执行用例
runner = unittest.TextTestRunner()
runner.run(my_suite)

二、中级版

a、请求函数(同上)

b、测试用例(同上)

c、测试套

import unittest
from testcase_01.test_case import TestHttpRequest
#收集用例TestSuite
my_suite = unittest.TestSuite()

loader=unittest.TestLoader()#用例加载器

#所有数据创建在一个列表里面
#把存入Excel里面的数据 拿出来 做成这种形式
test_data = [{
    'url': "https://passport.csdn.net/login",
    'data': {
        'pwdOrVerifyCode': "密码",
        'userIdentification': "账户"
    },
    'http_method': 'get',
    'title': '正常登录'
},
    {
        'url': "https://passport.csdn.net/login",
        'data': {
            'pwdOrVerifyCode': "密码",
            'userIdentification': "账户"
        },
        'http_method': 'post',
        'title': '输入错误的密码登录'
    },

]
for item in test_data:
    print("正在执行的用例是:{0}".format(item['title']))
    my_suite.addTest(TestHttpRequest(item['url'],item['data'],item['http_method'],'test_login'))
    # 执行用例
runner = unittest.TextTestRunner()
runner.run(my_suite)

三、针对大量测试用例时(存入excel中)

a、请求函数(同上)

b、使用excel编写接口测试用例

c、读取excel数据

from openpyxl import load_workbook



# 相对路径  绝对路径
# 打开工作簿
class DoExcel:
    def get_data(self, file_name, sheet_name):
        #       wb=load_workbook("../testcase_03/test.xlsx")
        wb = load_workbook(file_name)
        sheet = wb[sheet_name]

        test_data = []
        for i in range(2, sheet.max_row + 1):
            row_data = {}
            row_data['case_id'] = sheet.cell(i, 1).value
            row_data['url'] = sheet.cell(i, 2).value
            row_data['data'] = sheet.cell(i, 3).value
            row_data['title'] = sheet.cell(i, 4).value
            row_data['http_method'] = sheet.cell(i, 5).value
            test_data.append(row_data)
        return test_data

    def write_back(self,file_name,sheet_name,i,value,j=6): # 专门写回数据
        wb=load_workbook(file_name)
        sheet=wb[sheet_name]
        sheet.cell(i,j).value=value
        wb.save(file_name)


if __name__ == '__main__':
    res=DoExcel().get_data("D:\PycharmProjects\class_01\\testcase_03\\test.xlsx",'sheet1')
    print(res)

d、运行函数

from testcase_03.http_request import HttpRequest
from testcase_03.do_excel import DoExcel


def run(test_data):  # 传入列表嵌套字典的数据格式进来
    for item in test_data[0:5:1]:
        print("正在测试的用例是{0}".format(item['title']))
        res = HttpRequest().http_request(item["url"], str(item["data"]), item["http_method"])
        print("请求的结果是:{0}".format(res.json()))
        DoExcel().write_back(r"D:\PycharmProjects\class_01\\testcase_03\\test.xlsx", 'Sheet1', item['case_id']+1,
                             str(res.json()))


test_data = DoExcel().get_data(r"D:\PycharmProjects\class_01\\testcase_03\\test.xlsx", 'Sheet1')
run(test_data)

四、拓展----python方法(method)

a.reverse() 只可以把list倒过来
a.lower() 将字符串中的大写字母变成小写字母
a.upper() 将字符串中的小写字母变成大写字母
remove() set中删除
add() set中加入元素
insert() list中插入元素
append() 在list末尾插入 append 不可以用于NoneType
pop() 删除list 或者dict中元素
str.capitalize()返回的字符串只有它的第一个字符大写的副本
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
rm为空则为空格

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值