python– 如何参数化测试,从参数化夹具中获取参数?

python– 如何参数化测试,从参数化夹具中获取参数?,第1张

概述我提前道歉重复1000次单词参数.我的用例如下.我正在使用pytest来测试解析器,该解析器从在线商店中解析产品页面中的字段.我已经参数化了一个夹具,因此每个夹具都会导入一个产品的数据.根据数据,我的意思是HTML源代码和带有预期值的字段列表.在线下我有一个参数化测试,它接受一个元组列表(字段,期望值),以便每个字段都有自己的测试.基本上,“裸骨”问题会像这

我提前道歉重复1000次单词参数.我的用例如下.

我正在使用pytest来测试解析器,该解析器从在线商店中解析产品页面中的字段.

我已经参数化了一个夹具,因此每个夹具都会导入一个产品的数据.根据数据,我的意思是HTML源代码和带有预期值的字段列表.在线下我有一个参数化测试,它接受一个元组列表(字段,期望值),以便每个字段都有自己的测试.

基本上,“裸骨”问题会像这样:

from pytest import fixture,markproducts = [    {    'text': 'bla bla','fIElds': [('bla',0),('foo',-1)]    },{    'text': 'foo bar',-1),('bar',4)]    }]@fixture(params=products)def product(request):    return [email protected]('fIEld_key,fIEld_value',product['fIElds'])def test_parser(product,fIEld_key,fIEld_value):    assert product['text'].find(fIEld_key) == fIEld_value

在@ mark.parametrize装饰器的上下文中,产品不会被解释为fixture,因此pytest返回:

TypeError: 'function' object has no attribute '__getitem__'

pytest正在进行大量的内省魔术,我无法找到解决方案.我看了this question,但这不是我想要的.有没有办法实现这个目标?谢谢.最佳答案我认为你不需要固定装置来实现你的目标.

根据您的示例数据,这是一种可能的方式:

from pytest import markproducts = [    {        'text': 'bla bla',{        'text': 'foo bar',4)]    }]possible_params = []for product in products:  # Iterate over the products to build all desired invocations    for fIEld_key,fIEld_value in product['fIElds']:        possible_params.append((product['text'],fIEld_value))@mark.parametrize('text,possible_params)def test_parser(text,fIEld_value):    assert text.find(fIEld_key) == fIEld_value
总结

以上是内存溢出为你收集整理的python – 如何参数化测试,从参数化夹具中获取参数?全部内容,希望文章能够帮你解决python – 如何参数化测试,从参数化夹具中获取参数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存