自动化测试如何做?搭建接口自动化框架从0到1实战(超细)

本文详细介绍了从零开始搭建自动化测试框架的过程,包括Python编程基础、接口自动化项目实战、Web和App自动化测试,以及如何进行测试优化和框架定制。重点讲述了如何构建接口测试思维,强调接口测试在现代软件测试中的重要性,提供了数据驱动、标签管理、日志集成和测试报告定制等优化方案。最后,提到了自动化测试在一线大厂的应用和DevOps体系的重要性。
摘要由CSDN通过智能技术生成


前言

传统软件测试行业是以手工测试为主,也就是所谓的点点点,加上国内软件公司不注重测试,受制于大环境影响等也就给了大众一种测试人员虽然身处互联网行业,却是毫无技术可言的工种。

话锋一转,到了如今,不得不说一声:大人,时代变了,最直观的表现莫过于招聘要求的提高,越来越要求测试人员拥有七十二变的能力。
而在这其中,自动化测试能力是现在手工测试迈向更高技术岗位的必经之路。

搭建接口测试框架

构建接口测试思维:
当前互联网产品最大的特点就是快,上线周期通常是以"天"甚至是以"小时"为单位,而传统软件产品的周期多以"月",甚至以"年"为单位。因此,如何在保证产品质量下,有效缩短测试回归时间成了重中之重。

两个突破口:
引入测试的并发执行,即从以往的串行执行测试用例,采用分布式的方法并行执行。

从测试策略上找到突破口,从传统软件产品的金字塔测试策略往菱形测试策略转变。以接口测试为主,GUI测试为辅,单元测试则根据公司实际情况进行。

四点建议:
以中间层的API测试为重点做全面的测试;
轻量级的GUI测试,只覆盖最核心直接影响主营业务流程的E2E场景;
最上层的GUI测试通常利用探索式测试思维,以人工测试的方式发现尽可能多的潜在问题;
单元测试只对那些相对稳定并且核心的服务和模块开展全面的单元测试,而应用层或者上层业务只会做少量的;

为何要搭建测试框架?

开发自己的框架更能结合自身工作中的痛点,难点来做一个针对性的解决,使其扩展性更高,后期也能接入CI/CD。

利用现有工具来进行接口测试,随着项目的规模变大,维护成本将会增大,不利于管控。

工具本身具有一定的局限性,如支持的协议比较单一。
不用纠结技术选型,根据自身的技术实力和技术功底来选择,而不要以开发工程师的技术栈来选择。

定义专属框架目录结构
test_case:存放测试用例
test_data:存放测试数据
report:存放测试报告
common:存放公共方法
lib:存放第三方库
config:存放环境配置信息
main:框架主入口
fixture:类似unittest中的setUp/tearDown的存在,但功能远比他们强大

构建框架流程

在框架构建过程中,由于篇符有限,本文只涉及其中部分环节。

1、在common公共模块、封装定义框架专属的http请求能力

# !/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: pan-li
import requests


class HttpRequests(object):

    def __init__(self, url):
        self.url = url
        self.req = requests.session()
        # 自定义请求头,根据自身所在公司项目需求
        self.headers = {
   'Content-Type': 'application/json', 'User-Agent': 'Node midway-v2x Version/1.28.1'}
	
    # 封装get请求
    def get(self, url='', params='', data='', headers=None, cookies=None):
        response = self.req.get(url=url, params=params, data=data, headers=headers, cookies=cookies)
        return response
	
    # post请求
    def post(self, url='', params='', data='', headers=None, cookies=None):
        response = self.req.post(url=url, params=params, data=data, headers=headers, cookies=cookies)
        return response
	
    # put请求
    def put(self, url='', params='', data='', headers=None, cookies=None):
        response = self.req.put(url=url, params=params, data=data, headers=headers, cookies=cookies)
        return response

    # delete请求
    def delete(self, url='', params='', data='', headers=None, cookies=None):
        response = self.req.delete(url=url, params=params, data=data, headers=headers, cookies=cookies)
        return response

2、抽离URL生成url_conf.py在config文件中

import enum


class URLConf(enum.Enum):
    TEST_URL = 'http://10.12.7.20:8443/v2x-omp/api/'

3、编写接口测试用例在test_case文件中,第一版测试用例,安装pytest,pip install -U pytest

import os
import sys
import pytest
import json
from common.http_requests import *
from config.url_conf import URLConf
project_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(project_root)

class TestV2x:

    @classmethod
    def setup_class(cls) -> None:
        cls.url = URLConf.TEST_URL.value
        cls.http = HttpRequests(cls.url)

    def setup(self) -> None:
        self.headers = {
   'Content-Type': 'application/json', 'User-Agent': 'Node midway-v2x Version/1.28.1'}
        self.http = HttpRequests(self.url)

    def 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值