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
投稿
猜你喜欢
- 于是写测试程序。。。不行 下载最新的ODBC。。。还是不行 通过sql plus查询。。。咦?竟然也查不到。。。 于是,折腾。。。折腾。。。
- 使用jmail组件发送邮件:Function JMail(Send_From,Send_To,Send_Subject,Send_
- python 的PIL安装是一件很头疼的的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy
- 编写思路:把本地文件在客户端通过base64编码以后发送目的地.测试过程中,上传文件过大,导致超时不成功.后来经过改善.把编码分段发送.测试
- 前言由于Django是 * 站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,1.
- 疫情数据程序源码// An highlighted blockimport requestsimport jsonclass epidemi
- 用Dreamweaver制作网页时,如果插入的图片、GIF动画、声音、视频或链接的网页是用中文命名的,在用IE浏览器浏览时可能显示不出来。以
- python函数一、函数定义函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你
- 废话不多说1.win+R 启动“运行”输入cmd 点确定2.输入 cd /d xxxxxxx回车jupyter notebook回车在这里我
- 在网页局部的布局上,需要采用大量的自适应,来满足不同长度数据、内容的合理呈现。以此保证页面不至于因为内容过多等原因,导致重叠、溢出、撑开等破
- 本文实例为大家分享了tensorflow神经网络实现mnist分类的具体代码,供大家参考,具体内容如下只有两层的神经网络,直接上代码#引入包
- expand表示是否把series类型转化为DataFrame类型下面代码中的n表示去掉下划线"_"的数量代码如下:im
- 在第一部分和第二部分中我们分别介绍了改善网站性能中页面内容和服务器的几条守则,除此之外,JavaScript和CSS也是我们页
- Python2.7编写的读取html中指定元素,并生成excle文件#coding=gbkimport stringimport codec
- 我们的每期话题,团队在内部都会通过邮件进行一番讨论,随着讨论的激烈,往往能碰撞出很多有意义的观点,因此,将讨论内容分享出来,有兴趣的朋友可以
- 实际参数在函数中我们可以使用 arguments 对象获得 (注:形参可通过 arguments.callee 获得),虽然 argumen
- 本篇文章起源于在GCR MVP Open Day的时候和C# MVP张响讨论连接池的概念而来的。因此单独写一篇文章剖析一下连接池。 为什么需
- 前言最近在使用Pycharm,在运行或者安装的过程中出现了各种各样的报错,前面已经介绍过安装pygame出现报错的解决方法。文章总结了大部分
- 怎么样才能设计出漂亮的网页?怎么样才能做好网页设计工作,现在许多人还停留在网页制作的水平上,认为只要用好了网页制作软件,就能搞好网页设计了,
- YUI3.2.0 的 transition 模块,通过使用 transition:end 事件实现在 transition 完成后执行其他操