问题标签 [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 回答
110 浏览

python - 如何对具有多个参数的夹具进行参数化

我有一个我想request.param多次使用的夹具。

我该怎么做?如果我执行上述操作(使用两个request.param),然后在我的测试函数中使用它,如下所示:

我收到此错误:

在“参数化”中,名称的数量 (2): ['get_settings', 'expected'] 必须等于值的数量 (3)

我不确定它是否与get_user我传递给测试功能的第二个夹具()有关。但是我该如何解决呢?

更新

None是期望值,我把另外两个放在元组中。但在这种情况下,我收到以下错误:

测试设置失败

../conftest.py:76:


pydantic/env_settings.py:36:在 pydantic.env_settings.BaseSettings 中。初始化 ???


???

E pydantic.error_wrappers.ValidationError:设置 E TOKEN_KEY 的 2 个验证错误

预期 E str 类型 (type=type_error.str)

E TOKEN_PASSWORD

预期 E str 类型 (type=type_error.str)

pydantic/main.py:406:验证错误

0 投票
1 回答
40 浏览

python - PyTest:如何从函数中获取参数化参数列表

给定一个同时具有固定装置和参数化参数的测试函数,如何获取参数化参数及其值的字典?request.node.name我可以使用or访问序列化的值列表os.environ.get('PYTEST_CURRENT_TEST'),但这并没有给出参数的相应名称。PyTest 打印它们,但我需要在自定义错误处理挂钩中访问它们。

我想要的是以某种方式{'a': False, 'b': 1}进入test_foo

0 投票
0 回答
18 浏览

recursion - 如何在 pytest 参数化上强制停止条件?

我遇到了 pytest 参数化的问题 - 递归调用永远不会停止。

我们创建了一个自定义标记并将其多次分配给同一个测试

在 pytest 生成器中,标记被参数化,以便每个标记运行一次测试。

当存在多个消息代理标记时,测试会失败,因为递归调用永远不会停止。

我想通过强制停止条件来解决这个问题,但我很乐意听到任何替代解决方案。

这是使用 2 个不同的消息代理标记的测试的错误:

0 投票
1 回答
18 浏览

junit - JUnit - 参数化测试 - 停止编译

我在下面编写的代码在构造函数或@Before(取决于隐藏)之前停止编译。没有错误,它甚至不能运行一次。

我用教程做到了: https ://www.tutorialspoint.com/junit/junit_parameterized_test.htm

有人可以知道这段代码有什么问题吗?

0 投票
1 回答
70 浏览

python - pytest:使用带有熊猫数据框的夹具进行参数化

我有一个夹具,它返回一个pd.DataFrame. 我需要将各个列 ( pd.Series) 插入到单元测试中,并且我想使用parametrize.

这是一个没有parametrize. 数据框的每一列都将单独测试。但是,我想我可以摆脱input_series固定装置,不是吗?使用此代码,只会执行 1 个测试。但是,我正在寻找 3 个测试,同时摆脱 for 循环。

我基本上在寻找这样的东西:

0 投票
0 回答
17 浏览

android - 安卓。如何使用多个资产调用编写参数化测试

我有一个返回 SpannableString 的方法。我需要为此方法编写仪器测试。在测试内部,我解析 SpannableString 并检查跨度计数、跨度开始、跨度结束等。这是我的测试示例:

但是,我需要测试更多的输入数据。我想写一个参数化测试,但我的测试中有几个 assertEquals 调用,所以我不明白如何将其转换为参数化测试。也许有一种更优雅的方法可以通过许多 assertEquals 调用为大量输入编写测试。请帮我。

0 投票
1 回答
32 浏览

python-3.x - 相互依赖的pytest标记参数化

我正在使用 pytest 进行单元测试,我想对测试进行参数化。我知道我可以在类级别和方法级别使用@pytest.mark.parametrize。

但是,在我的情况下,param2 列表取决于实际的 param1 值。我想获得这样的东西:

但是,我不知道该怎么做。

我尝试使用嵌套函数,但这也没有成功:

Pytest 然后只为 param1 收集一个测试用例。

0 投票
1 回答
36 浏览

python - 使用间接参数化时,`fixture` 中的 `scope` 和 `parametrize` 中的 `scope` 之间的区别

我想使用此答案pytest 文档中所示的间接参数化。

我希望能够设置范围以能够配置是否为每个功能运行夹具或为其中许多功能运行一次。

但是我看到我可以在fixture装饰器上设置范围:

或者在parametrize装饰器上:

甚至两者同时:

有什么区别,什么时候应该设置每个?


更新:

我测试了每一个,看看它们有什么不同。

我用于测试的代码:

结果:

0 投票
0 回答
19 浏览

android - 安卓。是否可以编写参数化的仪器测试

我正在尝试编写一个参数化的仪器测试。这是我的代码:

但是当我运行我的测试时,我收到以下错误:

org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':

  1. 在 org.junit.runners.ParentRunner.(ParentRunner.java:92) 在 org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java: 74) 在 androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner.(AndroidJUnit4ClassRunner.java:43) 在 androidx.test.internal.runner.junit4.AndroidJUnit4Builder.runnerForClass(AndroidJUnit4Builder.java:65) 在 org.junit.runners。 model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:153)在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 androidx.test.internal.runner.TestLoader。doCreateRunner(TestLoader.java:73) 在 androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:105) 在 androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:804) 在 androidx.test .runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:613) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074) 在 androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411)Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)

我试图找到解决这个问题的方法。作为搜索的结果,我尝试@RunWith(Parameterized::class)为我的TempTest 班级添加注释。@Parameterized.Parameters我还为带有参数的方法添加了注释 testFormatTrimPercentValueArguments()

但是,当我运行测试时出现以下错误:

org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':

  1. org.junit.runners.ParentRunner.(ParentRunner.java:102) 的 org.junit.runners.ParentRunner.validate(ParentRunner.java:525) 没有可运行的方法。 84) 在 org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParametersFactory.createRunnerForTestWithParameters(BlockJUnit4ClassRunnerWithParametersFactory.java:16) 在 org.junit.runners.Parameterized$RunnersFactory 的 org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters.(BlockJUnit4ClassRunnerWithParameters.java:35)。 createRunnersForParameters(Parameterized.java:463) at org.junit.runners.Parameterized$RunnersFactory.createRunners(Parameterized.java:392) at org.junit.runners.Parameterized$RunnersFactory.access$100(Parameterized.java:360) at org. junit.runners.Parameterized.(Parameterized.java:307) 在 org.junit。runners.Parameterized.(Parameterized.java:303) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:334) at org.junit.internal.builders .AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 在 org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 在 androidx.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:63 ) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) 在 androidx.test.internal.runner.AndroidRunnerBuilder。 runnerForClass(AndroidRunnerBuilder.java:153) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:73) 在 androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:105) 在 androidx.test.internal.runner.TestRequestBuilder .build(TestRequestBuilder.java:804) 在 androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:613) 在 androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411) 在 android.app.Instrumentation$ InstrumentationThread.run(Instrumentation.java:2074)AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)

请告诉我我做错了什么。可能无法编写参数化的仪器测试,因为当我编写本地参数化测试时没有这样的问题。当我在androidTest文件夹中编写参数化测试时出现问题。请帮我。

0 投票
2 回答
95 浏览

python - 如何使用`fixture`和`parametrize`为pytest测试设置环境变量

我有 pytest 测试,其结果可能取决于环境变量。我想测试它们是否有这个环境变量的多个值。

我只想拥有一个设置此环境变量的夹具,但我希望能够为每个测试配置这些值,而不是每个夹具。

我该怎么做?