iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python接口自动化测试数据和代码分离解析
  • 418
分享到

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

2024-04-02 19:04:59 418人浏览 八月长安

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接口自动化测试资料请关注编程网其它相关文章!

--结束END--

本文标题: python接口自动化测试数据和代码分离解析

本文链接: https://www.lsjlt.com/news/134976.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作