Pytest: передать один прибор другому

1

Можно ли передать один объект прибора другому в Pytest? Например, предположим, что я хочу иметь два объекта fixture: один из которых имеет массив numpy, а другой - некоторую модель этого массива:

import pytest
import numpy as np

@pytest.fixture()
def arr():
  np.random.seed(141)
  return np.random.seed(141)

@pytest.fixture()
def model(arr):
  return arr * 2

def test_multiplication(arr, model):
  assert model == arr * 2

Здесь arr - function типа, но arr() - NoneType модель NoneType внутри модели, которая меня путает.

Вариант использования для этого случая - это случай, когда некоторые тесты нуждаются в доступе к необработанному arr, в то время как другим нужен доступ к моделям.

Однако для выполнения этой работы нужно передать один прибор другому (чтобы мы могли построить модель с использованием массива). Это возможно? Любая помощь, которую могут предложить другие, будет очень признательна!

Теги:
unit-testing
pytest

1 ответ

0
Лучший ответ

Упс, моя функция sample() не определяла массив! Вы можете делиться светильниками так, как это было описано выше:

import pytest
import numpy as np

@pytest.fixture()
def arr():
  np.random.seed(141)
  return np.random.rand(100,2)

@pytest.fixture()
def model(arr):
  return arr * 2

def test_multiplication(arr, model):
  assert np.all(model == arr * 2)

Можно также создать класс с различными методами класса, а затем вернуть его из прибора. Затем тесты могут вызывать индивидуальные методы класса или атрибуты класса доступа, чтобы получить доступ к большему фрагменту общего состояния. Очень хорошо.

  • 0
    Вы вызываете arr дважды, было бы лучше вернуть кортеж в вашей модели прибора. return arr, arr*2 и затем в тестах передаем только модель крепежа, и делаем arr, model = model
  • 0
    @Jav_Rock да, в этом случае это может сработать, но этот подход не масштабируется, если мои объекты образуют большой граф ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню