问题标签 [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 投票
1 回答
71 浏览

python - pytest:从函数输出/从目录结构参数化

我正在尝试从目录结构构建测试用例参数和预期输出。目录结构如下:

我已经写了一个函数,我们称它为makeIO(..)从每个测试用例中获取文件并返回格式为的元组:([input_1_contents, input_2_contents], [output_contents]).

我正在努力的是让那个元组被传递到test_foo.py. 这是我到目前为止所拥有的:

奇怪的部分:当且仅当@pytest.fixturemakeIO(). 如果我把它留在那里,我会收到这个错误:Fixture "makeIO" called directly. Fixtures are not meant to be called directly, but are created automatically when test functions request them as parameters.

有没有更多的pythonic和优雅的方式来实现我的目标?是否会推荐任何替代目录结构或功能?另外,我认为我只是错过了固定装置的要点,并且希望能澄清一下为什么以及如何使用它们(文档没有为我澄清)。


免责声明:我对 pytest 完全陌生,因此我感谢所有可以使学习曲线变平的有用资源。

0 投票
2 回答
155 浏览

python - 在pytest中使用双参数化将测试标记为xfail

我有一个 pytest 测试,可以针对两个不同的数据库测试几个输入。我两次使用参数化标记来做到这一点:

我的经验是仅在input_1使用db_type_2(例如)测试由于错误而失败但使用不同的数据库通过运行相同的输入时。我只想将input_1anddb_type_2组合标记为 xfail,而所有其他组合不应标记为 xfail。我找不到该怎么做。

如果标记db_type_2为 xfail:

所有输入都将失败,这不是我正在寻找的行为。有人可以帮我吗?

0 投票
1 回答
64 浏览

python - 重命名 pytest.mark.parametrize 中的参数

我有一个使用目录中的文件作为参数的代码:

它可以按我的需要工作,但我不喜欢 pytest 输出:

有没有办法为测试显示与传递给测试的值不同的名称?我想从文件名中删除目录名称和扩展名(仅用于测试名称,我想将它们“按原样”传递给测试)。

0 投票
0 回答
36 浏览

python - 访问 request.fspath 以生成测试参数

我知道不可能在夹具中添加更多测试,因为它们在测试时运行,并且测试是在收集时生成的。

但我希望能够根据测试函数的路径(测试函数所在的模块)生成测试参数。

基本上,我想要这样的东西:

它应该打印一个模块的路径,一个字母一个字母地作为函数的参数:

这段代码(上面)肯定不起作用,但可能有一种方法可以使用 fspath 作为参数化的参数?

0 投票
1 回答
68 浏览

java - 如何使用 hemcrest 参数化 JUnit5 中的异常?

我想使用一种方法使用 hemcrest 的一种参数化测试来测试所有不同的异常。所以这意味着Exception1.class,Exception2.class应该是参数。我如何参数化它们,并使用 hemcrest 来实现?

0 投票
1 回答
156 浏览

pytest - pytest 文件中的函数仅适用于硬编码值

我有以下test_dss.py用于 pytest 的文件:

我的问题是setup_list函数,它只能获取{DSS_URL}, {APY_KEY},的硬编码值{PROJECT}。我无法使用PARAMS或其他方法,例如test_scenario_run 我如何将PARAMS也传递给此函数?

0 投票
1 回答
73 浏览

java - 如何在一组值上正确使用 assertThrows?

我已经学习了一点Java,所以请告知在这种情况下异常抛出测试应该是什么样子?我有以下赌博机课程。然后对其进行 2 次测试。我真的不知道第二种方法(shouldThrowWhenNumbersOutOfRange)中的“整数”应该遵循什么。您能否告知确切的语法?

0 投票
1 回答
311 浏览

spring - 带有参数化 Spring ApplicationContext 配置的 JUnit 参数化测试

SpringBoot 2.2.11,JUnit 5。
我的应用程序有几个环境。我有一个测试可以测试这些环境中的某些条件,而不是应用程序本身。

因此,我想重用相同的测试方法,但根据环境变量/系统属性在不同的环境中运行它。

到目前为止,它是硬编码的:

我想使用类似的东西@ParameterizedTest

除非,这些参数来得太晚,当上下文已经创建时,测试上下文管理器无法考虑。我希望将参数应用于上下文创建。

到目前为止,我所能找到的所有在运行时对上下文进行参数化的方法都使我能够对 bean 进行参数化 - 即它是用于应用程序配置而不是测试配置,例如@ContextConfiguration,或@ConfigurationProperties。当然,我也可以使用配置文件,并运行几次。但我更喜欢一次跑步。

在我看来这是不可能的,因为我想要的是在方法级别,但上下文创建只能在类级别进行控制。所以我可以把测试放到一个基类上,有几个子类,然后根据运行时参数选择运行这些。但这并不像@ParametrizedTest:)那么优雅

SpringBoot 2.2.x 可以做到这一点吗?
也许@ProfileValueSource可以以某种方式使用?

0 投票
1 回答
251 浏览

python - pytest stack 使用动态参数参数化装饰器

我是 pytest 的新手,所以请多多包涵。
我正在尝试使用堆栈参数化装饰器来测试多个组合排列,但问题是我如何使用堆栈中其他参数化装饰器的值。

我发现了以下内容:但这并不完全是我正在寻找的
堆叠参数
使用 pytest.mark.parametrize 中的固定装置\

这就是我想要实现的目标:

get_ids()根据给定的environment和返回一个 id 列表model
这个解决方案不起作用,因为它引发了一个未解决的参考错误environmentmodel

我想使用参数化装饰器的原因是因为我需要测试 和 的所有排列,environments但希望 pytest 为每个组合生成单独的测试。modelsids

我目前的解决方案是:

这个解决方案有效,但是每个测试都非常长,因为它循环了一长串 id,我更喜欢运行多个小测试,而不是更少的测试但很长。
它使理解测试中发生的事情变得更加困难。
有什么建议吗?

0 投票
2 回答
303 浏览

postman - Postman 参数化测试,具有相同请求的实际值和预期错误

我有测试用例数量、相同端点、不同实际值、不同预期错误消息的请求。我想创建发送特定值的参数化请求,并从列表中检查所有情况下的特定错误消息。请求正文:

回复:

不同情况下的错误信息变化:

  1. 缺少用户名
  2. 丢失密码
  3. 密码或用户名不正确
  4. ETC

现在,我对每种情况都有单独的要求。问题:

有没有办法让 1 个请求具有一组不同的值,检查特定的错误消息/代码?