如何使用pytest fixture作为参数化参数?

时间:2015-09-22 16:06:06

标签: python pytest fixtures

我有这样的pytest测试:

i

现在,作为重构的一部分,我已经移动了一行:

email_two = generate_email_two()

@pytest.mark.parametrize('email', ['email_one@example.com', email_two])
def test_email_thing(self, email):
        ... # Run some test with the email parameter

进入自己的fixture(在conftest.py文件中),因为它在其他各个地方使用。但是,除了直接导入fixture函数之外,还有一些方法可以在此测试中引用它吗?我知道funcargs通常是调用fixture的方式,但在这种情况下,当我想调用fixture时,我不在测试函数内。

1 个答案:

答案 0 :(得分:-1)

我最后通过在测试函数中使用for循环来完成此操作,循环遍历每封电子邮件。就测试输出而言,这不是最好的方法,但它确实起到了作用。

import pytest
import fireblog.login as login

pytestmark = pytest.mark.usefixtures("test_with_one_theme")

class Test_groupfinder:
    def test_success(self, persona_test_admin_login, pyramid_config):
        emails = ['id5489746@mockmyid.com', persona_test_admin_login['email']]
        for email in emails:
            res = login.groupfinder(email)
            assert res == ['g:admin']

    def test_failure(self, pyramid_config):
        fake_email = 'some_fake_address@example.com'
        res = login.groupfinder(fake_email)
        assert res == ['g:commenter']