问题标签 [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.

0 投票
2 回答
13515 浏览

java - 在 JUnit 5 中为 @ParameterizedTest 生成显示名称

我有一堆@ParameterizedTest从 a 接收参数的 s@MethodSource具有非常详细toString()的结果(例如 Selenium's WebDriver)。这些默认情况下用于组成相应的显示名称。从JUnit 5 用户指南

默认情况下,参数化测试调用的显示名称包含调用索引和该特定调用的所有参数的字符串表示形式。但是,您可以通过注释的name属性自定义调用显示名称[...]@ParameterizedTest

虽然这允许在一定程度上自定义显示名称,但似乎我无法调整各个参数的字符串表示。不幸的是,指定生成器 via@DisplayNameGeneration只能在类级别应用,并且不会影响参数化测试调用的显示名称。

有没有办法使用DisplayNameGeneratorfor@ParameterizedTest或自定义给定参数的字符串表示?

0 投票
1 回答
529 浏览

java - 使用 JUnitParamsRunner 对不同方法的 Mockito.verify() 进行参数化测试

所以,我有一个方法,它接受一个 Object 参数,并根据它的值调用不同的方法(我只使用 if 语句而不是 switch)。

我知道 JUnitParamsRunner 简化了参数化测试的编写,并且我知道 Mockito.verify() 来检查是否调用了特定方法。但在我的情况下,是否可以对不同的输入进行参数化测试并检查是否调用了相应的方法?还是对于 verify() 我需要为每个场景编写单独的测试。

0 投票
1 回答
509 浏览

c# - 如何将二维数组设置为单元测试的参数

如果预期变量是整数,它就像这样

但是当有二维数组 int[,] 而不是 int 参数时应该怎么办?当我尝试这样做时

错误说

属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

0 投票
1 回答
383 浏览

maven - 如何在 Maven 中按名称包含/排除 JUnit 5 `ParameterizedTest`

我有一个参数化的 JUnit 5 测试,例如

我想排除在 Maven 中运行的枚举案例之一,如下所述

相同的事情没有!将意味着包含,即只执行这个测试。

我玩弄了排除表达式和方括号,但我没有找到使它起作用的组合。

一个演示项目在 GitHub 上

0 投票
0 回答
434 浏览

python - Pytest在使用参数化时测试KeyError异常

我正在使用该@pytest.mark.parametrize功能使用 pytest 测试多个测试用例。现在我很难理解如何测试我的函数是否KeyError默认抛出 a,我该如何为它编写测试?

在下面的示例中,transcriptcategory是两个输入参数。category是关键。

因此,在上面的示例中,第二个参数应该是查找字典的键,默认情况下,KeyError如果无法找到该键,函数会抛出 a。在最后一个测试用例中,我的函数会抛出错误KeyError: ''。我不确定如何确保将异常作为 pytest 捕获。

0 投票
2 回答
926 浏览

python - 如何将参数化的夹具作为参数传递给另一个夹具

我试图避免在我的测试中重复太多样板,我想以更结构化的方式重写它们。假设我有两个不同的解析器,它们都可以将文本解析为doc. 然后该文档将用于其他测试。最终目标是公开一个doc()可以在其他测试中使用的夹具,并且以这样的方式进行参数化,即它运行给定解析器和文本的所有组合。

现在的问题是,如何创建一个doc()看起来像这样的夹具:

其中parser参数化为 parser_a 和 parser_b,以及textshort_text 和 long_text。这意味着总共doc将测试解析器和文本的四种组合。

PyTest 的参数化装置的文档非常模糊,我找不到如何解决这个问题的答案。欢迎大家帮忙。

0 投票
2 回答
4747 浏览

selenium-webdriver - 如何在 JUnit 5 中参数化 beforeEach()?

我使用 JUnit 5 作为我的测试运行器。

在设置方法中,我硬编码了 3 个参数(platformNameplatformVersiondeviceName)。我有一个测试方法可以测试各种组合...这意味着,在运行我的testLogin()测试时,它应该在多个平台名称、版本、设备名称上运行...

所以,我尝试如下...

我的问题是,beforeEach()方法如何参数化?另外,我想获取测试方法名称......所以,如果我指定参数,那么我应该在哪里指定 TestInfo 参数。

请帮我。我也看到了下面的问题......

在 JUnit 5 中参数化 beforeEach/beforeAll

========

0 投票
1 回答
570 浏览

java - junit java错误消息的参数化测试构造函数:测试类应该有一个公共零参数构造函数

对于我正在尝试创建的这个参数化测试用例,我真的可以使用一些帮助。无论我创建哪种构造函数,IDE 都会给出错误消息。这是我的代码:

我尝试了不同的方法来创建 1 参数、2 和无参数构造函数。但我从未见过这类问题或解决方案可能是什么。我正在关注链接和教程。这是我的第一个参数化测试,调试似乎也没有为我提供太多帮助。我也看到了这些链接,但它们没有帮助。我也可以在 GitHub 或 gist 上为项目的其余部分提供代码。我确实通过正确创建 fileList 来调试我的代码,但我对之后会发生什么或需要发生什么知之甚少。这是错误的摘录:

这是我的代码的最新版本:

这是调试会话的图片,显示了文件列表中我想要的所有内容。一些板对象如何不转移到我的 Solver 构造函数。 在此处输入图像描述

0 投票
1 回答
318 浏览

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

0 投票
0 回答
258 浏览

junit5 - JUnit5 不同参数的多个来源(笛卡尔积)

我正在尝试使用 JUnit 5 编写一个测试,该测试应该测试某些参数的多种组合。本质上,我想测试一些来自不同来源的输入的笛卡尔积。考虑以下测试:

现在的问题是,我只有inputandexpected并且应该测试一些固定值,这些固定值values.csv总是返回所有这些值的预期值。不知何故,我必须提供我的 CSV 中所有值的笛卡尔积,并且所有值都可以采用。我查看了https://stackoverflow.com/a/57648088/7962200但这需要硬编码我的所有测试用例或手动读取 CSV 以提供值流。我想到了更多类似的东西otherParametermethodUnderTest()otherParameter