Как правильно вернуть структурированные данные из прибора? - PullRequest
1 голос
/ 17 октября 2019

В настоящее время у меня есть такая настройка:

./
  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, если импорт из него считается плохой практикой.

1 Ответ

1 голос
/ 18 октября 2019

обычно это можно решить, просто используя параметризацию без дополнительных типов

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...