python接口自动化测试数据和代码分离解析

目录
  • common中存放的是整个项目中公共使用的封装方法
    • 数据分离的第一步先找到工程项目路径
    • 数据分离的第二步封装一个读取yml文件的函数或类方法
    • 数据分离的第三步测试用例中引入数据并运行

common中存放的是整个项目中公共使用的封装方法

从工程目录上可以看到区分

datas中专门存放测试数据(yml文件)

cases中专门集中存放测试用例 ...

数据分离的第一步先找到工程项目路径

# -*- encoding: utf-8 -*-
"""
@__Software__: PyCharm
@__File__: osPath.py
@__Date__: 2021/6/14 21:08
"""
import os
# 获取项目的根目录,apiTest层
FILE = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
# 获取存放测试数据的文件夹
DATAS = os.path.join(FILE, 'datas')
print(DATAS)
 F:\project_gitee\Test\apiTest\datas
Process finished with exit code 0

运行结果可以清晰看到,已经找到存放数据的文件夹路径并拼接成功 ...

os模块不熟悉可参考菜鸟教程

数据分离的第二步封装一个读取yml文件的函数或类方法

这里就先写一个函数把

首先要先安装yml

 pip install pyaml

再导入包,然后再进行封装

# -*- encoding: utf-8 -*-
"""
@__Software__: PyCharm
@__File__: readData.py
@__Date__: 2021/6/14 21:07
"""
import os
import yaml
from common import osPath as sp
def read_yml(file):
    with open(file, mode='r', encoding='utf-8') as read_data:
        results = yaml.load(read_data, Loader=yaml.FullLoader)
        return results
print(read_yml(os.path.join(sp.DATAS, 'test_data.yml')))

{'test_data': [[{'type': 1}, {'reason': '查询成功!'}], [{'type': 2}, {'reason': '查询成功!'}], [{'type': 3}, {'reason': '查询成功!'}]]}
Process finished with exit code 0

读取yml的函数写完以后,要记得测试下是否满足自己需要的功能;从结果来看满足我目前需要功能 ...

yaml语法不熟悉的也可以参考菜鸟教程

数据分离的第三步测试用例中引入数据并运行

# -*- encoding: utf-8 -*-
"""
@__Software__: PyCharm
@__File__: test_example.py
@__Date__: 2021/6/13 19:00
"""
import os
import pytest
import requests
from common import osPath as sp
from common.readData import read_yml
class TestExample:
    s = requests.Session()
    data = read_yml(os.path.join(sp.DATAS, 'test_data.yml'))
    @pytest.mark.parametrize("test_data, expected", data['test_data'])
    def test_example(self, test_data, expected):
        with self.s as s:
            url = "http://apis.juhe.cn/fapig/euro2020/schedule?key=9d0dfd9dbaf51de283ee8a88e58e218b"
            response = s.get(url, params=test_data)
            print(response.json())
             assert response.json()["reason"] == expected["reason"]
if __name__ == '__main__':
    pytest.main(["-v", "-s", "test_example"])
Launching pytest with arguments F:/project_gitee/Test/apiTest/cases/test_example.py in F:\project_gitee\Test\apiTest\cases
============================= test session starts ============================
collecting ... collected 3 items
test_example.py::TestExample::test_example[test_data0-expected0]
test_example.py::TestExample::test_example[test_data1-expected1]
test_example.py::TestExample::test_example[test_data2-expected2]
 ============================== 3 passed in 0.66s ==============================

data['test_data']是字典取值,取key为test_data的value值 ...

从返回的结果可以清晰看到,3 passed,且用时0.66s ...

至此,测试数据和代码分离完成 ...

以上就是python接口自动化测试数据和代码分离解析的详细内容,更多关于python接口自动化测试资料请关注我们其它相关文章!

(0)

相关推荐

  • Python接口自动化浅析unittest单元测试原理

    目录 一.单元测试三连问 1.什么是单元测试? 2.为什么要做单元测试? 3.怎么做单元测试? 二.unittest模块说明 1.unittest简介 2.unittest组成 1.TestCase(测试用例): 2.TestSuite(测试套件): 3.TestLoader(测试用例加载器): 4.TextTestRunner(执行测试用例): 5.Test Fixture(测试环境数据准备和清理): 3.unittest核心工作原理 三.unittest单元测试 1.实现思路 2.使用介绍

  • Python实现http接口自动化测试的示例代码

    网上http接口自动化测试Python实现有很多,我也是在慕课网上学习了相关课程,并实际操作了一遍,于是进行一些总结,便于以后回顾温习,有许多不完善的地方,希望大神们多多指教! 接口测试常用的工具有fiddler,postman,jmeter等,使用这些工具测试时,需要了解常用的接口类型和区别,比如我用到的post和get请求,表面上看get用于获取数据post用于修改数据,两者传递参数的方式也有不一样,get是直接在url里通过?来连接参数,而post则是把数据放在HTTP的包体内(reque

  • Python接口自动化浅析数据驱动原理

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析登录接口测试实战,主要介绍接口概念.接口用例设计及登录接口测试实战. 以下主要介绍使用openpyxl模块操作excel及结合ddt实现数据驱动. 在此之前,我们已经实现了用unittest框架编写测试用例,实现了请求接口的封装,这样虽然已经可以完成接口的自动化测试,但是其复用性并不高. 我们看到每个方法(测试用例)的代码几乎是一模一样的,试想一下,在我们的测试场景中, 一个登录接口有可能会有十几条到几十条测试用例,如果每组数

  • python使用pytest接口自动化测试的使用

    简单的设计思路 利用pytest对一个接口进行各种场景测试并且断言验证 配置文件独立开来(conf文件),实现不同环境下只需要改环境配置即可 测试的场景读取excle的测试用例,可支持全量执行或者自定义哪条用例执行(用例内带加密变量): 接口入参还包含了加密的逻辑,所以需加一层加密处理 用例的样例: 应用的库包含: import pytest import time, json import base64, hmac import hashlib, uuid, re import request

  • Python接口自动化浅析登录接口测试实战

    目录 1.什么是接口? 那么,接口测试和功能测试的区别在哪呢? 2.如何开展接口测试? 3.如何设计接口用例? 1.获取接口文档 Fiddler 2.分析接口文档的接口,提取测试点 3.接口测试用例设计思路 4.接口测试其他范围 接口业务测试 接口的性能测试 接口安全测试 在项目下新建一个文件夹common 编写登录接口用例,调用封装的请求类. 对于用例的一些总结: 4.接口测试用例实战 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析unittest单元测试原理,主要介绍

  • python接口自动化测试数据和代码分离解析

    目录 common中存放的是整个项目中公共使用的封装方法 数据分离的第一步先找到工程项目路径 数据分离的第二步封装一个读取yml文件的函数或类方法 数据分离的第三步测试用例中引入数据并运行 common中存放的是整个项目中公共使用的封装方法 从工程目录上可以看到区分 datas中专门存放测试数据(yml文件) cases中专门集中存放测试用例 ... 数据分离的第一步先找到工程项目路径 # -*- encoding: utf-8 -*- """ @__Software__:

  • Python接口自动化判断元素原理解析

    这篇文章主要介绍了Python接口自动化判断元素原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景: 在做接口自动化时,通常会判断接口返回中的数据信息,与数据库中返回的数据信息是否一致,比如:将接口返回信息的用户姓名存放到一个列表中,将数据库返回的用户姓名存放到另一个列表中,这时需要判断两个列表是否一致,如果不一致,将不同的元素信息分别回写到excel文件中,可以一目了然的看出哪些信息返回的不正确. 下列代码中直接存放列表信息,比较如

  • Python接口自动化系列之unittest结合ddt的使用教程详解

    前面一篇我们已经把unittest的常用用法都已经讲过了,可能很多小伙伴有个疑问,unittest框架怎么做数据驱动呢?这节我们就来学习一下. 1.unittest 没有自带数据驱动功能. 所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成. DDT是 "Data-Driven Tests"的缩写. 资料:http://ddt.readthedocs.io/en/latest/ 2.什么是ddt? 测试步骤相同,代码一样,测试数据不同,当我们输入一组测试数据

  • python接口自动化之ConfigParser配置文件的使用详解

    前言:目前我们使用的绝大多数计算机程序,无论是办公软件,浏览器,甚至游戏.视频都是通过菜单界面系统配置的,它几乎成了我们使用机器的默认方式.而在python中,也有这样的一个配置模块可以把代码可配置化. 什么是配置文件 ​这里的配置文件不同于我们平常所见的可视化的菜单界面,它是像代码形式的,如下示例: ​❓为什么要做配置文件? ​✔️让代码和配置都变成可模块化可配置化,提高代码的重用性,那什么时候把它变成可配置化呢?多处地方都用到一个参数时,经常会变化的参数等,都可以可配置化,我们只需要在配置文

  • python接口自动化框架实战

    python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提取测试用例 2.测试报告的输出,并且测试报告得包括执行的测试用例的数量.成功的数量.失败的数量以及哪条成功了,失败的是哪一个,失败的原因是什么:测试结果的总体情况通过图表来表示. 3.测试报告用什么形式输出,excel,还是html,还是其他的,这里我选择了excel 4.配置文件需要配置什么东西

  • Python接口自动化浅析yaml配置文件原理及用法

    目录 一.yaml介绍及使用 01 yaml简介 02 yaml语法规则 03 yaml数据结构 对象 数组 纯量 二.yaml配置文件的使用 01 yaml配置文件准备 02 yaml配置文件格式校验 三.yaml配置文件读写 01 安装pyYaml 02 yaml模块源码解析 load: dump: 03 读写yaml配置文件 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析数据驱动原理,主要介绍openpyxl操作excel,结合ddt实现数据驱动. 在自动化过程中,

  • Python接口自动化浅析logging封装及实战操作

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析logging日志原理及模块操作流程,主要介绍日志相关概念及logging日志模块的操作流程. 而在此之前介绍过yaml封装,数据驱动.配置文件.日志文件等独立的功能,我们将这些串联起来,形成一个完整的接口测试流程. 以下主要介绍将logging常用配置放入yaml配置文件.logging日志封装及结合登录用例讲解日志如何在接口测试中运用. 一.yaml配置文件 将日志中的常用配置,比如日志器名称.日志器等级及格式化放在配置文

  • Python接口自动化浅析如何处理接口依赖

    在前面的Python接口自动化测试系列文章:Python接口自动化浅析logging封装及实战操作, 其中介绍了将logging常用配置放入yaml配置文件.logging日志封装及结合登录用例讲解日志如何在接口测试中运用. 以下主要介绍如何提取token.将token作为类属性全局调用及充值接口如何携带token进行请求. 一.场景说明 在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖? 在此之前我们介绍过session管理器保存会话状态. 如果接

随机推荐