[英]What's the correct way to return structured data from a fixture?
目前我有这样的设置:
./
src/
mylib.py
tests/
__init__.py
conftest.py
test_mylib.py
mylib.py
包含:
def add(x, y):
return x + y
conftest.py
包含:
import attr
import pytest
@attr.s(slots=True)
class AdditionTestCase:
input1 = attr.ib()
input2 = attr.ib()
output_expected = attr.ib()
@pytest.fixture
def addition_test_case() -> AdditionTestCase:
# make up some data
return AdditionTestCase(1, 2, 3)
并且test_mylib.py
包含:
from mylib import add
from tests.conftest import AdditionTestCase
def test_add(addition_test_case: AdditionTestCase):
input1 = addition_test_case.input1
input2 = addition_test_case.input2
output_expected = addition_test_case.output_expected
output_actual = add(input1, input2)
assert output_actual == output_expected
这有什么问题吗? 有更好的方法吗? 如果从它导入被认为是不好的做法,我可以将类型定义conftest.py
之外。
通常这可以通过仅使用没有额外类型的参数化来解决
@pytest.mark.parametrize("left, right, expected_output", [
(1, 1, 2),
(2, 2, 4),
]
def test_add(left, right, expected_output):
output = add(left, right)
assert output == expected_output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.