IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 接口自动化:测试用例参数化 -> 正文阅读

[开发测试]接口自动化:测试用例参数化

上篇文章运行了第一个测试用例,但如果遇到多个用例时,就会写很多的代码,最后导致代码冗余且可维护性特别差...

接下来就引入了数据参数化的操作;pytest框架中的parametrize就是专门处理参数化的装饰器...

图片


import pytest
import requests

data = [
    [{"type": 1}, {"reason": "fff"}],
    [{"type": 2}, {"reason": "fff"}],
    [{"type": 3}, {"reason": "fff"}]
]


class TestExample:
    s = requests.Session()

    @pytest.mark.parametrize("test_data, expected", data)
    def test_example(self, test_data, expected):
        print(test_data, expected)
        

if __name__ == '__main__':
    pytest.main(["-v", "-s", "test_example"])

============================= test session starts ==============================
collecting ... collected 3 items

test_example.py::TestExample::test_example[test_data0-expected0] PASSED  [ 33%]{'type': 1} {'reason': 'fff'}

test_example.py::TestExample::test_example[test_data1-expected1] PASSED  [ 66%]{'type': 2} {'reason': 'fff'}

test_example.py::TestExample::test_example[test_data2-expected2] PASSED  [100%]{'type': 3} {'reason': 'fff'}


============================== 3 passed in 0.12s ===============================

Process finished with exit code 0

print 打印了test_data和expected,从运行后的结果可以清晰的看到显示的数据信息。

test_data接收的是接口需要传递的参数;expected接收的是预期结果,用于对接口返回值进行校验是否相等...

  1. pytest框架参数化操作
  2. pytest框架参数化操作

上述引用的两篇文章总结了pytest中的parametrize的基本使用,可自行阅读...

接口中引入测试数据及预期结果后,开始运行代码


import pytest
import requests

data = [
    [{"type": 1}, {"reason": "查询成功!"}],
    [{"type": 2}, {"reason": "查询成功!"}],
    [{"type": 3}, {"reason": "查询成功!"}]
]


class TestExample:
    s = requests.Session()

    @pytest.mark.parametrize("test_data, expected", 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)

            assert response.json()["reason"] == expected["reason"]


if __name__ == '__main__':
    pytest.main(["-v", "-s", "test_example"])

============================= 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 1.13s ===============================

Process finished with exit code 0

从结果可以看到,3个passed,用时1.13s

至此,参数化减少了部分代码的重复性,也初步具备了代码的可读性和可维护性...

图片

以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;感觉还不错记得点赞呦,谢谢!

未完,待续…

一直都在努力,希望您也是!

微信搜索公众号:就用python

更多内容欢迎关注公众号
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:02:20  更:2021-09-08 11:03:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:06:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码