定义:生成器是由函数+yield关键字创造出来的写法
遇到问题:
pytest执行没找到用例(未以test开头命名文件)
''' python生成器+pytest实现参数化 case:模拟从execl或者yaml文件读取出的用例数据 标题 内容 预取结果 是否执行 ''' import pytest case=[('标题','内容','预期结果','是'),('标题1','内容1','预期结果1','否'),('标题2','内容2','预期结果2','是'),('标题3','内容3','预期结果3','是')] def ye(): '''这里写读取文件的方法,最终读出case格式这样的用例数据,返回一个生成器对象''' for i in case: print(f'i={i}') #如果选择不执行,那这条数据就不会返回出去 if i[3]=='是': # 返回一组用例数据,这个数据使用完成后再次返回下一组数据 yield i #使用生成器需要循环读取它返回的每一个值,生成器就是ye()这个函数 # for i in ye(): # print(i) # # # ('标题', '内容', '预期结果', '是') # # ('标题2', '内容2', '预期结果2', '是') # # ('标题3', '内容3', '预期结果3', '是') # #pytest 参数化 #parametrize类似循环读取变量里面的值,可以配合生成器使用,生成器就是ye()这个函数 @pytest.mark.parametrize('title,body,ex,is_execute',ye()) def test(title,body,ex,is_execute): print(f'title={title}, body={body} ex={ex},是否执行={is_execute}') assert '标题' in title if __name__ == '__main__': pytest.main([r'F:\script\pytest_tool\test_she.py'])
选择三个执行一个不执行
选择二个执行二个不执行