定义:生成器是由函数+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'])