问题标签 [parametrized-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Python 中动态参数化多个测试
我正在尝试使用 Pytest 编写动态测试套件,其中测试数据保存在单独的文件中,例如 YAML 文件或 .csv。我想运行多个测试,所有这些测试都是从同一个文件中参数化的。假设我有一个测试文件test_foo.py
,如下所示:
使用参数化装饰器,我可以在 pytest 中运行多个测试,并且可以按预期工作:
但我想动态参数化这些测试。我的意思是,我想将所有测试的测试数据写在一个单独的文件中,这样当我运行 pytest 时,它将把我写的所有测试数据应用到每个测试函数中。假设我有一个看起来像这样的 YAML 文件:
然后我想读取这个 YAML 文件并使用这些数据来参数化我的测试文件中的所有测试函数。
我知道这个pytest_generate_tests
钩子,我一直在尝试使用它来动态加载测试。我尝试将之前传递给parametrize
装饰器的相同参数和数据值添加到metafunc.parametrize
钩子中:
但是,这不起作用,因为 pytest 尝试将测试数据应用于每个函数:
我想知道的是:如何使用 pytest动态参数化多个测试?我已经使用 pdb 对 pytest 进行了自省,据我所知,我metafunc
只知道您在文件中定义的第一个测试。在我上面的例子中,test_addnums
首先定义,所以当我vars(metafunc)
在 pdb 调试器中打印时,它会显示这些值:
但是如果我切换test_foobar
andtest_addnums
函数,并颠倒parametrize
调用的顺序,它会显示关于的信息test_foobar
。
所以看起来 metafunc 实际上并没有在我的测试文件中存储关于每个测试函数的信息。因此我不能使用fixturenames
orfunction
属性,因为它们只适用于一个特定的功能,而不是全部。
如果是这种情况,那么我如何访问所有其他测试功能并单独参数化它们?
java - JUnit 参数化测试随机失败
我有以下参数化测试
它在单独运行时有效,但在我与其他测试一起运行时一直失败。我发现第三个字符串正在评估为以下字符串
我改变了它,但它仍然失败。我正在使用 Eclipse,并且棋盘(它是来自 Web 的国际象棋游戏,我正在尝试重构)以这种格式显示。
python - 如何更改 pytest 类中参数化堆叠的顺序?
我有一个测试类,它有一个参数化类和其中的一些测试,每个测试都有自己的参数化方法。我希望该类使用一个类参数在其中运行所有测试,并且只有在所有测试完成后,才使用第二个参数再次运行测试。例如:代码是这样的:
现在它使用如下参数:
我希望它使用这样的参数:
有什么办法可以做到这一点?
python - pytest - 得到空参数集
我正在尝试自动化 api,基本上我想做的是执行 test_001_post_desafio,将其响应中的信息保存在列表中并在 test_002_post_validate 中使用它,但是当使用 pytest 执行后者时出现错误:“SKIPPED [1] test_email .py:43: 得到空参数集 ['otp', 'idOtp', 'subdomain']"
我究竟做错了什么?
我可以在测试用例中完成整个测试,但我认为它不是很优雅
c++ - GTest 参数化测试从数组或类似文件中解包 Values 参数
使用 GTest 进行简单的参数化测试,例如:
如果我想从数组中生成值,例如:
然后使用该数组作为参数::testing::Values(...)
,例如:
如何将数组解包成多个参数呢?
编辑:
我已经达到了定义模板函数的部分解决方案
然后像这样使用它:
但是第二个参数 ,std::make_index_sequence<2>{}
并不是很优雅。template
无论如何,用另一个来提供第二个参数是可能的吗?
pytest - pytest mock patch side_effect 与 pytest.mark.parametrize 一起使用时不会迭代
我有以下 pytest 脚本,并且该side_effect
值[2, 6]
没有被迭代。它总是卡2
在 test 函数test_my_function
中。
我的问题是:
如何使值与函数中的测试用例side_effect
一起迭代。(假设我们必须使用)。parametrize
test_my_function
parametrize
java - 如何将@ParametrizedTest String var 评估为表达式
这是 Junit5 反复出现的挑战@ParametrizedTest
......
我想将以下表达式(显然是一个字符串)传递给我的断言,但是字符串参数expectedTemplate
保持为一个字符串,并且它不像我在 Bash 中所期望的那样“扩展”(执行)......很难制定我希望从这段代码中实现的目标会更清晰:
请注意
Constants
是一个持有常量值的类,主要由 JUnit 测试使用。tesSupport
是一个内部帮助器工厂类,它从提供的 JSON 文件构造给定对象。
运行测试时失败:
因为常量GENERIC_TEMPLATE
in的值Constants
不是作为表达式处理:Constants.GENERIC_TEMPLATE
而是保持为 String :-(
testing - 在 Before 方法中参数化的 JUnit 稍后执行并抛出 ParameterResolutionException
我有一个测试类,它由带有一些参数的 @Before 方法和其他测试方法组成。
但它一直先执行 abc() 并抛出错误
我对 JUnit 参数很陌生。Before 方法可以同时是 ParametrizedTest 吗?如果没有此注释 [ParametrizedTests],它似乎无法按预期工作,但另一方面,我需要在所有其他方法之前执行它。可能是什么问题以及解决方案是什么?
c++ - Boost测试治具参数
我想使用 boost::test 编写一个参数化的单元测试。最好我想将参数传递给我的夹具类。我用相同的设置和拆卸场景编写了多个测试用例,所以它会非常方便。不幸的是,我知道 boost::test 框架假设夹具类有一个零构造函数。所以我看不到任何方法可以在夹具类中传递测试参数。
你知道我怎样才能正确设计我的测试吗?
BOOST_DATA_TEST_CASE_F
我唯一的猜测是在测试体内使用和调用一些辅助方法。或多或少是这样的:
但是,我不喜欢在set_up
每次测试开始时添加方法的想法。也许在提升中,有一些隐藏的功能可以在这种情况下重复使用?