python接口自动化测试数据和代码分离解析
作者:一名小测试 发布时间:2022-12-29 06:00:11
标签:python,接口自动化,测试数据,代码分离
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 ...
至此,测试数据和代码分离完成 ...
来源:https://blog.csdn.net/LIFENG0402/article/details/120142541
0
投稿
猜你喜欢
- 本文实例为大家分享了python3实现点餐系统的具体代码,供大家参考,具体内容如下题目: 某餐厅外卖每天更新菜品,
- 完整代码下载:http://xiazai.jb51.net/201407/tools/python-migong.rar最近研究了下迷宫的生
- 什么是YOLOV4YOLOV4是YOLOV3的改进版,在YOLOV3的基础上结合了非常多的小Tricks。尽管没有目标检测上革命性的改变,但
- 目录1.简介2.如何解决3.虚线框类代码4.测试UI界面如下图所示5.拖动时的效果图如下所示1.简介看到很多才学QT的人都会问为啥无边框拖动
- 本文实例讲述了python打开文件并获取文件相关属性的方法。分享给大家供大家参考。具体分析如下:下面的代码通过open函数打开文件,并输出文
- 如下所示:f = open('./val.txt')lines = f.readlines() #整行读取f.close()
- 本文实例讲述了Flask框架各种常见装饰器。分享给大家供大家参考,具体如下:效果类似django的process_request的装饰器@a
- 新一代W3C,xhtml代码规范,大家在设计网站的时候务必遵循这一规范 ,这将对网站的优化,网站的推广,搜索引擎的友好
- remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空List_remove = [1, 2, 2, 2, 3, 4]pr
- JSON 相关概念:序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,
- <html>位于网页的顶端它没有父辈,称之为根节点1.元素节点(element node)可以说,整个DOM模型都是由元素节点(
- fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行。它的工作方式和readlin
- 实现html界面<!DOCTYPE html><html><head><title>Sele
- 本文实例为大家分享了Python实点云分割k-means(sklearn),供大家参考,具体内容如下植物叶片分割import numpy a
- 本文实例讲述了Python面向对象之类的定义与继承用法。分享给大家供大家参考,具体如下:定义一个类类中的方法同,类外方法,默认传self值类
- 一、SQL速成 以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。
- 【作者翻译】结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通
- 对win32 COM不是很熟悉,不知道一个程序究竟有多少属性或者方法可以操作。仅仅是一个Sheet页的添加就费了我好长时间,因为这种成功来自
- 1、find(sub[, start[, end]])在索引start和end之间查找字符串sub找到,则返回最左端的索引值,未找到,则返回
- 更加颗粒级的缓存框架使用方法是对单个视图的输出进行缓存。 django.views.decorators.cache定义了一个自动缓存视图响