Pytest 多个 @pytest.mark.parametrize 与一个设置

标签 pytest

首先,我的英语很差,而且我是新来的。如果我做错了什么,我很抱歉。

我的问题是我是否有多个参数,但我只想为每个 test_function 调用一次 setup_method。

但是,它调用 setup 每个参数(测试用例)。我不知道如何解决这个问题。

这是我的代码:

class Test_Class:

    def setup_method(self):    
        print("==========set up===========")


    @pytest.mark.parametrize('people', ['Mike','Alice','Bob'])
    @pytest.mark.parametrize('say', ['Hi','how is going on'])
    def test_function(self, people, say):
        print(people, say)



这是结果
==========set up===========
Mike Hi

==========set up===========
Alice Hi

==========set up===========
Bob Hi

==========set up===========
Mike how is going on

==========set up===========
Alice how is going on

==========set up===========
Bob how is going on


但我想要这样的结果:
==========set up===========
Mike Hi

Alice Hi

Bob Hi

==========set up===========
Mike how is going on

Alice how is going on

Bob how is going on


使用下一个参数调用设置函数。

任何建议都会非常有帮助

谢谢

最佳答案

我不确定您的方法是否正确,这是根本原因。
通常,使用 list 或 key:value 方法进行默认参数化就足够了,请尝试深入调查您的目标。在我看来,您需要查看 key:value 方法,例如:

>>> a = ['Mike','Alice','Bob']
>>> b = ['Hi','how is going on']
>>> c = {x:a for x in b}
>>> c
{'Hi': ['Mike', 'Alice', 'Bob'], 'how is going on': ['Mike', 'Alice', 'Bob']}

方法 -> 操作:[名称列表]

此外,您可以使用前置条件准备数据,例如在 conftest.py 中,请在此处阅读我的回答:https://stackoverflow.com/a/60430631/4361977

如果我的建议不是实际的,那么请提供真实的例子,我会尽力帮助你。

关于Pytest 多个 @pytest.mark.parametrize 与一个设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60428630/

相关文章:

python - ImportError - 在 CircleCI 上测试失败但在本地通过

python - 在虚拟文件结构中测试我的代码

python-3.x - python pytest - 如何在其固定方法中获取测试标记?

python - 在 pytest 中是否可以访问参数化装饰器中的命令行参数?

python - pytest 和 coverage 组合不起作用

python - py.test 在从模块导入功能时同时处理 pylint 和 flake8

python - 如果一个失败了,如何跳过类里面的其余测试?

python - Pytest 测试显示在代码覆盖率报告中

python - 如何使用 pytest 中的 setUp 作为异步方法?

python - pytest 属性错误 : "function object has no attribute" when referencing fixture in Python 3