美文网首页
python生成器在读取接口用例中应用

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

作者: 软件开发技术修炼 | 来源:发表于2023-06-13 20:31 被阅读0次

    Python生成器(Generator)是一种特殊类型的函数,它可以通过yield语句逐步生成值。生成器提供了一种延迟计算的方式,可以逐步产生结果,而不是一次性生成所有的值。

    1、生成器原理:

    生成器函数在被调用时并不立即执行,而是返回一个生成器对象。生成器对象可以被迭代,每次迭代都会执行生成器函数中的代码,直到遇到yield语句。当遇到yield语句时,生成器会暂停执行,并将yield语句后面的值作为当前迭代的结果返回给调用方。下一次迭代时,生成器会从暂停的位置继续执行,直到再次遇到yield语句。

    2、常用场景:

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

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

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

    # 生成器函数,打开指定测试文件并逐行读取,每读取一行,都使用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实现参数化

    #定义:生成器是由函数和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'])
    
    • 运行结果

    相关文章

      网友评论

          本文标题:python生成器在读取接口用例中应用

          本文链接:https://www.haomeiwen.com/subject/rvzcydtx.html