欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > python生成器在读取接口用例中应用解析

python生成器在读取接口用例中应用解析

2025/4/8 5:32:05 来源:https://blog.csdn.net/Xsk215/article/details/140152149  浏览:    关键词:python生成器在读取接口用例中应用解析

Python生成器Generator

Python生成器(Generator)是一种特殊类型的函数,它可以通过yield语句逐步生成值。

生成器提供了一种延迟计算的方式,可以逐步产生结果,而不是一次性生成所有的值。

1、生成器原理:

生成器函数在被调用时并不立即执行,而是返回一个生成器对象。生成器对象可以被迭代,每次迭代都会执行生成器函数中的代码,直到遇到yield语句。

当遇到yield语句时,生成器会暂停执行,并将yield语句后面的值作为当前迭代的结果返回给调用方。下一次迭代时,生成器会从暂停的位置继续执行,直到再次遇到yield语句。

2、常用场景:

  • 迭代大数据集:处理大型文件、数据库查询结果或网络数据流等;
  • 无限序列:例如自然数序列、斐波那契数列等;
  • 数据流处理:处理连续的数据流,例如实时日志数据或传感器数据;
  • 惰性计算:算法计算应用;
  • 异步编程:生成器可以与协程结合使用,处理IO密集型任务或事件驱动的程序;

提供高效的惰性计算和按需生成数据的能力。

3、生成器在接口自动化中读取大量用例

1

2

3

4

5

6

7

8

9

10

11

# 生成器函数,打开指定测试文件并逐行读取,每读取一行,都使用yield将用例返回给调用方

def read_test_case(file_path):

    with open(file_path,'r') as file:

        for line in file:

            # line.strip(),字符串方法,用于去除字符串两端的空白字符(包括空格、制表符、换行符等)

            yield line.strip()

# 测试文件路劲

test_case_path = "testcase.txt"

for test_case in read_test_case(test_case_path):

    # execute_case函数为执行用例函数

    execute_case(test_case)

4、生成器+pytest实现参数化

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#定义:生成器是由函数和yield关键字创造出来的写法

'''

case:模拟从excel或yaml文件读取出的用例数据

     标题 内容 预取结果 是否执行

'''

import pytest

case=[('标题', '内容', '预期结果','是'),('标题1', '内容1', '预期结果1','是'),('标题2', '内容2', '预期结果2','是2')]

def ye():

    '''这里写读取文件的方法,是最终读取case格式这样的用例数据,返回一个生成器对'''

    for i in case:

        # 判断用例是否需要执行,如是,返回

        #print(f'i={i}')

        if i[3] == '是':

            # 返回一组用例数据,这组数据使用完后,再返回下一组数据

            yield i

# 使用生成器需要循环读取它返回的每一个值,生成器就是ye()这个函数

# for i in ye():

#     print(i)

#   ('标题', '内容', '预期结果', '是')

#   ('标题1', '内容1', '预期结果1', '是')

@pytest.mark.parametrize('title,body,result,is_execute',ye())

def test(title,body,result,is_execute):

    print(f'title={title},是否执行={is_execute}')

    assert '是' == is_execute

if __name__ == '__main__':

    pytest.main([r'E:\Mygithub projects\New_api_auto\test_api.py'])

运行结果 

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词