Python接口自动化测试框架完结版--实战(一)

前面写过的框架,只能说是个基本框架,不能满足项目需求,接下来通过项目实战,来完善项目框架。

.以一个简单注册接口为例,接口文档如下:
在这里插入图片描述
二.在开始前需要根据接口文档编写测试用例,这里推荐用excel来管理测试数据,简单的写了几条如下:(手机号先写成固定的手机号,后面在做优化)
在这里插入图片描述

三.前面搭建基础框架的时候简单介绍过,这里就不一一详细介绍了。
在这里插入图片描述

四.先来看注册的用例代码,在写之前先理一下大概流程:
1.数据在excel,所以需要导入excel方法来读取数据
2.读取测试数据后,需要导入ddt做数据驱动
3.然后发起http请求,需要导入封装好的request方法,根据实际结果与预期结果做对比
4.代码执行完成需要记录日志,需要导入日志方法
5.log的信息放在了yaml文件中,需要导入读取yaml文件的方法
6.生成日志,读取数据等需要用到路径,需要导入路径文件

前面已经封装好的方法就不一一贴出来了,request方法前面没写,如下:

import requests

def visit(url,method='get',params=None,data=None,json=None,**kwargs):
    res=requests.request(method,url,params=params,data=data,json=json,**kwargs)
    try:
        return res.json()
    except Exception as e:
        print("格式错误{}".format(e))

配置文件信息如下:
在这里插入图片描述
有思路了就直接上代码:

import unittest
import ddt
import json
import os
from common import handler_request#导入封装好的requests类
from common import handler_excel#导入excel方法
from common import logger_handler#导入日志方法
from common import path_config#导入所有文件的路径
from common import read_yaml#导入读取yaml文件的方法
case_path=os.path.join(path_config.DATA_PATH,'case.xlsx')#用例数据的路径
excel=handler_excel.ExcelMothed(case_path)#初始化
register_cases=excel.get_case('register')#获取注册的case
log_info=read_yaml.read_yaml(os.path.join(path_config.CONFIG_PATH,'config.yml'))['log']#获得yaml中的log信息
logger=logger_handler.get_logger('register',logger_level=log_info['logger_level'],stream_level=log_info['stream_level'],handler_level=log_info['file_level'])


@ddt.ddt
class TestRegister(unittest.TestCase):
    @ddt.data(*register_cases)
    def testregister(self,case):
    	 res=handler_request.visit(case['url'],case['method'],json=json.loads(case['data']),headers=json.loads(case['headers']))#请求接口
    	 try:
            self.assertTrue(json.loads(case['expected'])['code']==res['code'])#断言实际结果与预期结果
            self.assertTrue(json.loads(case['expected'])['msg']==res['msg'])
            logger.info("第{}条用例通过".format(case['case_id']))
         except AssertionError as e:
            logger.error('第{}条用例失败'.format(case['case_id']))   

运行看一下结果:
在这里插入图片描述
自动化测试就实现了,但是如果测试数据没有改变而再次运行的话,注册成功的用例就会失败,所以就会造成每次测试前需要去手动改用例中的测试数据(手机号),为避免这种情况可以通过数据参数化来保证每次测试的时候数据不一样。

基本思路:每次都随机生成手机号,并替换掉excel中的手机号。
代码如下:此方法也放到了common中

import random
def random_phone():
    '''随机生成手机号'''
    while True:
        phone = '1' + random
  • 8
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久醉绕心弦,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值