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

0 投票
2 回答
2119 浏览

csv - JUnit5 CsvFileSource - 转义逗号(双引号后)

我还没有找到一种方法来转义注释,使用的 CSV 资源文件中的字符。CsvFileSource junit5因此,任何包含逗号的字符串都会被切成两半,并且永远不会使用第二部分。

有一些解决方法吗?


编辑:原始问题不完整。问题是我的资源中有逗号和双引号。参数化测试处理引号,但不处理两者。

CSV 行示例:

引号被正确转义,但只有在出现逗号之前(这是我可能猜到的算法)。

所以生成的断言看起来像这样:

0 投票
2 回答
1602 浏览

java - 使用 JUnit 5 的 @ParametrizedTest 而不是 @TestFactory Stream 有什么区别/优势?

首先,在 Junit 5 动态测试指南的结论中,它们是什么意思?

参数化测试可以替代本文中的许多示例。但是,动态测试与参数化测试不同,因为它们支持完整的测试生命周期,而参数化测试不支持。

我浏览了JUnit 5 – Parameterized Tests并相信我理解了句法层面的差异,并且相信我明白了这一点:

此外,动态测试在如何生成输入以及如何执行测试方面提供了更大的灵活性。

但是看起来,为什么有人更喜欢参数化测试而不是动态测试?

0 投票
1 回答
1373 浏览

python - 如何将函数作为 pytest 参数化夹具传递?

如何在 Python 中将函数作为参数传递?我想做一些类似下面的代码的事情。

我的目标是传递不同的参数来测试单个函数。

0 投票
1 回答
447 浏览

java - JUnit:在多个目标类上运行相同的测试

在我的 Java 课程介绍中,我正在尝试自动化一种方法来一次对多个学生的文件进行评分。

假设以下条件为真,我如何对文件夹中的所有文件运行相同的测试:

  • 所有文件都存在于同一个文件夹中(没有子文件夹)
  • 所有文件都有一个 .java 扩展名
  • 所有文件名都是重要的标识符
  • 每个文件中的代码都满足相同的要求

我对 JUnit 很满意,但过去我只通过 IntelliJ 以单文件、笨拙的方式使用它。

这是我要测试的简单示例文件:

我真的希望能够对给定文件夹中存在的所有 .java 文件进行自动化单元测试,并将结果输出到我可以使用的东西(控制台、文件等)。

可能的输出可能如下所示:

0 投票
0 回答
104 浏览

python-3.x - 如何通过参数化初始化webdriver

我是 pytest 的新手,可能我对参数化的理解不如我想的那么好。我的目标是在运行测试时传递浏览器名称来告诉 pytest 我要使用哪个 webdriver。

这是我的代码:

conftest.py

网络驱动程序.py

test_login.py

当我运行时:

我得到:

0 投票
2 回答
2177 浏览

python - 如何从 pytest 夹具中正确返回列表以用于参数化?

我正在尝试构建一个小 pytest 测试以确保所有预期的键都存在于 redis 中。我有一个预期密钥列表,我将其存储为 YML 文件。测试本身将查询 redis 以确保列表中的每个预期键都存在。

最初,我将此设置为test_keys.py文件中的一个巨大列表。这是这样设置的:

这行得通。由于我想为 redis 环境的其他一些检查复制这种类型的测试,所以我不想将具有几百个键的多个列表放入这些文件中。

我想我可以将它们提取到 YML 文件中并通过固定装置加载密钥。

我的夹具看起来像这样:

YML 看起来像这样:

我的测试装饰器更改为:

我正在为此使用该pytest-lazy-fixture软件包。

我在这里遇到的问题是expected_keys现在等于整个预期键列表。当它在我的测试文件中时,它不再像我在静态列表中所拥有的每个单独的键。

我试图按照 Oleh Rybalchenko 的回答建议做

但是,这失败了TypeError: 'LazyFixture' object is not iterable

我知道我只有一个 argname 并且我应该有一个列表,但是文档中的示例是将参数传递给fixture()装饰器。我不是。我的列表是由 YML 文件的结果生成的。


问题:如何调整我的固定装置,以便一次正确地为parametrize装饰者返回一件物品?

0 投票
1 回答
448 浏览

java - 带有返回 ArrayList 的方法的 @MethodSource 的参数化 JUnit 测试

我想为具有三个输入参数的方法实现参数化 JUnit 测试。我希望测试通过这三个输入参数的所有可能组合的笛卡尔积来运行。为此,我有一个方法,可以生成笛卡尔积并将其存储在 Arraylist 中。如何访问我的测试方法的单个值?我已阅读有关返回参数流的信息,但我想为参数生成值而不是显式地编写它们。

0 投票
2 回答
4013 浏览

kotlin - 使用纯 Kotlin 函数作为 Junit5 方法源

我很好奇在 Kotlin 中,在 Junit5 的参数化测试中,我是否可以使用类外的方法作为 @MethodSource。

我知道在 Kotlin 中使用 @MethodSource 的两种方法 - 伴生对象和 @TestInstance(TestInstance.Lifecycle.PER_CLASS)。我想知道它是否可以以不同的方式完成,例如通过在类之外声明一个方法并使用一些注释?我试图这样做,但它不起作用,我想知道是否可以做类似的事情。

0 投票
1 回答
512 浏览

maven - Maven:@ParameterizedTest 上没有可运行的方法

我有一个参数化测试,它在使用 IntelliJ 运行测试配置运行时正常通过。

但是运行mvn test它会抛出java.lang.Exception: No runnable methods.

所有其他标有通过两种方式的非参数化测试@Test,但由于这个参数化测试,我得到了构建失败。

我会很感激任何帮助:)

测试:

错误mvn test

我的 POM 依赖项:

并构建插件:

0 投票
1 回答
430 浏览

python - 如何在pytest中只运行一次参数化测试

我只需要在 pytest 中运行一次参数化测试,例如,我有一个包含测试数据的动态列表,并希望使用 test_data[0] 参数运行测试,以防用户为此发送一些条件,例如标记