问题标签 [parameterized-unit-test]
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.
java - 在 JUnit 5 中为 @ParameterizedTest 生成显示名称
我有一堆@ParameterizedTest
从 a 接收参数的 s@MethodSource
具有非常详细toString()
的结果(例如 Selenium's WebDriver
)。这些默认情况下用于组成相应的显示名称。从JUnit 5 用户指南:
默认情况下,参数化测试调用的显示名称包含调用索引和该特定调用的所有参数的字符串表示形式。但是,您可以通过注释的
name
属性自定义调用显示名称[...]@ParameterizedTest
虽然这允许在一定程度上自定义显示名称,但似乎我无法调整各个参数的字符串表示。不幸的是,指定生成器 via@DisplayNameGeneration
只能在类级别应用,并且不会影响参数化测试调用的显示名称。
有没有办法使用DisplayNameGenerator
for@ParameterizedTest
或自定义给定参数的字符串表示?
java - 使用 JUnitParamsRunner 对不同方法的 Mockito.verify() 进行参数化测试
所以,我有一个方法,它接受一个 Object 参数,并根据它的值调用不同的方法(我只使用 if 语句而不是 switch)。
我知道 JUnitParamsRunner 简化了参数化测试的编写,并且我知道 Mockito.verify() 来检查是否调用了特定方法。但在我的情况下,是否可以对不同的输入进行参数化测试并检查是否调用了相应的方法?还是对于 verify() 我需要为每个场景编写单独的测试。
c# - 如何将二维数组设置为单元测试的参数
如果预期变量是整数,它就像这样
但是当有二维数组 int[,] 而不是 int 参数时应该怎么办?当我尝试这样做时
错误说
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
maven - 如何在 Maven 中按名称包含/排除 JUnit 5 `ParameterizedTest`
我有一个参数化的 JUnit 5 测试,例如
我想排除在 Maven 中运行的枚举案例之一,如下所述:
相同的事情没有!
将意味着包含,即只执行这个测试。
我玩弄了排除表达式和方括号,但我没有找到使它起作用的组合。
一个演示项目在 GitHub 上。
python - Pytest在使用参数化时测试KeyError异常
我正在使用该@pytest.mark.parametrize
功能使用 pytest 测试多个测试用例。现在我很难理解如何测试我的函数是否KeyError
默认抛出 a,我该如何为它编写测试?
在下面的示例中,transcript
和category
是两个输入参数。category
是关键。
因此,在上面的示例中,第二个参数应该是查找字典的键,默认情况下,KeyError
如果无法找到该键,函数会抛出 a。在最后一个测试用例中,我的函数会抛出错误KeyError: ''
。我不确定如何确保将异常作为 pytest 捕获。
python - 如何将参数化的夹具作为参数传递给另一个夹具
我试图避免在我的测试中重复太多样板,我想以更结构化的方式重写它们。假设我有两个不同的解析器,它们都可以将文本解析为doc
. 然后该文档将用于其他测试。最终目标是公开一个doc()
可以在其他测试中使用的夹具,并且以这样的方式进行参数化,即它运行给定解析器和文本的所有组合。
现在的问题是,如何创建一个doc()
看起来像这样的夹具:
其中parser
参数化为 parser_a 和 parser_b,以及text
short_text 和 long_text。这意味着总共doc
将测试解析器和文本的四种组合。
PyTest 的参数化装置的文档非常模糊,我找不到如何解决这个问题的答案。欢迎大家帮忙。
selenium-webdriver - 如何在 JUnit 5 中参数化 beforeEach()?
我使用 JUnit 5 作为我的测试运行器。
在设置方法中,我硬编码了 3 个参数(platformName
、platformVersion
和deviceName
)。我有一个测试方法可以测试各种组合...这意味着,在运行我的testLogin()
测试时,它应该在多个平台名称、版本、设备名称上运行...
所以,我尝试如下...
我的问题是,beforeEach()
方法如何参数化?另外,我想获取测试方法名称......所以,如果我指定参数,那么我应该在哪里指定 TestInfo 参数。
请帮我。我也看到了下面的问题......
在 JUnit 5 中参数化 beforeEach/beforeAll
========
java - junit java错误消息的参数化测试构造函数:测试类应该有一个公共零参数构造函数
unit-testing - 使用 testinfra_hosts 数组,您可以控制测试中用于每个主机的参数化值吗?
我正在尝试编写一个测试套件来使用 testinfra 验证某些服务器的状态。
这是我第一次使用 python/testinfra/pytest。
作为一个简短的伪代码示例
测试文件.py
每个服务器都有自己独特的 params yaml 文件。我希望每台服务器都通过相同的测试,但是我需要每台服务器使用其各自 .yml 文件中的参数化值运行测试。
上面代码的问题在于,它将尝试针对服务器 2 和 3 执行所有 server1 的唯一参数,然后将再次启动服务器 2 对服务器 1-3 唯一参数运行。
我找不到一种干净的方法来基本上以 server1 作为主机和 server 1 参数运行一次测试,然后对 server2 和 server2 参数等再次执行相同的操作。
我尝试在测试文件本身中使用 for 循环,将每个 instance_params.yml 读入字典,其中键是服务器名称和包含所有服务器参数的值 - 但这闻起来不太好,因为断言是在循环内部,如果该服务器的参数之一失败,则循环退出并且不会尝试该服务器的任何其他参数。
我已经研究了 pytest_collection_modifyitems 但我无法完全理解如何让它做我想做的事。我觉得我可能缺少一个简单的解决方案。
我最后的手段是将测试和参数化参数单独分开为
不过,这种方法对我来说并不合适。
对新的大三学生的任何帮助将不胜感激,在此之前我从未在这里问过任何问题希望这是有道理的:)
更新:@ajk 找到了解决方案!pytest_generate_tests 函数正是我所需要的——而且我在此过程中加深了对 pytest 的理解。
谢谢阿克!我欠你一个:D
junit5 - JUnit5 不同参数的多个来源(笛卡尔积)
我正在尝试使用 JUnit 5 编写一个测试,该测试应该测试某些参数的多种组合。本质上,我想测试一些来自不同来源的输入的笛卡尔积。考虑以下测试:
现在的问题是,我只有input
andexpected
并且应该测试一些固定值,这些固定值values.csv
总是返回所有这些值的预期值。不知何故,我必须提供我的 CSV 中所有值的笛卡尔积,并且所有值都可以采用。我查看了https://stackoverflow.com/a/57648088/7962200但这需要硬编码我的所有测试用例或手动读取 CSV 以提供值流。我想到了更多类似的东西otherParameter
methodUnderTest()
otherParameter