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

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

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

# -*- 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)

1

2

F:\project_gitee\Test\apiTest\datas

Process finished with exit code 0

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

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

这里就先写一个函数把

首先要先安装yml

1

pip install pyaml

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# -*- 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')))

1

2

{'test_data': [[{'type': 1}, {'reason': '查询成功!'}], [{'type': 2}, {'reason': '查询成功!'}], [{'type': 3}, {'reason': '查询成功!'}]]}

Process finished with exit code 0

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# -*- 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"])

1

2

3

4

5

6

7

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 ...

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

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/228595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能运维相关算法总结

概念: 智能运维(AIOps)是基于已有的运维数据(日志、监控信息 、应用信息)并通过机器学习的方法来进一步解决自动化运维没办法解决的问题,其核心是机器学习和大数据平台。 目标: 事前预警&…

C++ day59 下一个更大元素Ⅱ 接雨水

题目1:503 下一个更大元素Ⅰ 题目链接:下一个更大元素Ⅱ 对题目的理解 返回循环数组中每个元素的下一个更大元素, 数字x的下一个更大元素是循环等的搜索它的最近的下一个更大的数 数组的中至少有一个元素 本题难点在于循环遍历这里&…

新手搭建知识付费平台必备攻略:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起,越来越多的知识提供者希望搭建自己的知识付费平台。然而,对于新手来说,如何以低成本、高效率地实现这一目标,同时满足自身需求并提高客户转化率,是一大挑战。本文将…

【面试经典150 | 二叉树】从前序与中序遍历序列构造二叉树

文章目录 写在前面Tag题目来源题目解读解题思路方法一:递归 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容…

Java数字化健康卫生智慧云HIS系统源码

基于云计算技术的B/S架构云HIS集挂号、处方、收费、取药、病历于一体,完全适配各类中小型医院、诊所。 一、云 HIS定义 1、云 HIS 系统是运用云计算、大数据、物联网等新兴信息技术,按照现代医疗卫生管理要求,在一定区域范围内以数字化形式提供医疗卫生…

软文营销全过程分享,助力企业提高宣传效率

数字化时代下,软文营销已经成为许多企业推广品牌的手段,但是在营销过程中大部分企业认为只需要写好文章进行发布就够了,这其实是错误的,只会浪费企业的时间精力。今天媒介盒子就分享软文营销全过程,助力企业提高宣传效…

cpu 300% 爆满 内存占用不高 排查

top查询 cpu最高的PID ps -ef | grep PID 查看具体哪一个jar服务 jstack -l PID > ./jstack.log 下载/打印进程的线程栈信息 可以加信息简单分析 或进一步 查看堆内存使用情况 jmap -heap Java进程id jstack.log 信息示例 Full thread dump Java HotSpot(TM) 64-Bit Se…

SpringMVC 案例

文章目录 前言1. 计算器1.1 准备前端代码1.2 测试前端代码1.3 完成后端代码1.4 验证程序 2. 留言板2.1 前端代码准备2.2 测试前端代码2.3 完成前后端交互代码2.4 完成后端代码2.5 案例测试2.6 完善前后端交互2.7 完善后端代码2.8 完整功能测试 lombok简单的方式添加Lombok工具3…

小视频怎么做成二维码?视频二维码3步生成

在日常工作和生活中经常会看到各种类型的小视频、短视频,比如网页、抖音等等的视频都是可以下载查看的。当我们想要将下载视频分享给多个人看时,生成二维码的方式会更加的方便,那么视频如何生成二维码呢?下面就将快捷生成二维码的…

spring boot 3.2 整合 keycloak

背景 项目中用到 keycloak,因此其他所有管理页面要集成 keycloak 做统一登录认证。 Keycloak 侧配置 容器方式启动 keycloak 服务端 docker run -d --name mykeycloak -p 8080:8080 -e KEYCLOAK_ADMINadmin -e KEYCLOAK_ADMIN_PASSWORDadmin ke…

LeetCode 每日一题 Day 6(DFS+BFS)

1466. 重新规划路线 n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变…

【GEE笔记】在线分类流程,标注样本点、分类和精度评价

GEE在线分类流程 介绍 GEE(Google Earth Engine)是一个强大的地理信息处理平台,可以实现在线的遥感影像分析和处理。本文将介绍如何使用GEE进行在线的分类流程,包括标注样本点、分类和精度评价。本文以2020年5月至8月的哨兵2影像…

优秀案例 | 元宇宙双语财经科技主播“舒望”主持首届粤港澳大湾区元宇宙国际传播论坛

12月6日,由南方财经全媒体集团指导、大湾区元宇宙国际传播实验室(GBA MIC Lab)主办、南财国际传播中心和21世纪经济报道共同承办,以“多元共创开放共享”为主题的首届粤港澳大湾区元宇宙国际传播论坛在广州隆重开幕。 “立足湾区,…

【GEE笔记】随机森林特征重要性计算并排序

随机森林是一种基于多个决策树的集成学习方法,可以用于分类和回归问题。在gee中可以使用ee.Classifier.smileRandomForest()函数来创建一个随机森林分类器,并用它来对影像进行分类。 随机森林分类器有一个重要的属性,就是可以计算每个特征&a…

【沁恒蓝牙MESH】CH582串口中断内存溢出导致MCU频繁重启

本文主要记录了【沁恒蓝牙mesh】CH582串口中断内存溢出导致MCU频繁重启 由于开发疏忽,导致的数组内存溢出,是入门嵌入式开发经常忽视的错误,用以记录,共勉!! 目录 1. 遇到问题描述以及解决1.1 问题一&#…

案例063:基于微信小程序的传染病防控宣传系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder …

都2023年了还在搜索Maven是什么?赶紧来学习(超详细一文搞懂)

文章目录 前言1. 到底什么是 Maven2. 为什么要学Maven3. 创建一个 Maven 项目4. Maven 核心功能4.1 项目构建4.2 依赖管理 4. Maven 仓库4.1 本地仓库4.2 中央仓库4.3 私有服务器, 也称为私服 5. Maven 设置国内源5.1 配置当前项目setting5.2 设置新项目的setting 总结 前言 我…

N4694D 电子校准件(ECal),67 GHz,1.85 mm,2 端口

N4694D 电子校准件 Keysight N4694D 微波电子校准件(ECal)可以快速、轻松和准确地对是德科技矢量网络分析仪进行校准。 N4694D 是一款精密型 2 端口电子校准件,支持 1.85 mm 连接器和高达 67 GHz 的频率范围。 用户可以在阴头-阴头、阳头-阳头…

低代码开发:激发创新还是程序员的末日?

前言 近年来,低代码开发备受关注,引发了市场上的热议。这一新兴技术被标榜为具备低门槛、高效率和易集成等特性,然而,却引发了一系列的争论。究竟低代码是伪需求还是行业创新的助推器?它是否可能让程序员失业&#xf…