есть ли эквивалент для rspec для python? - PullRequest
0 голосов
/ 05 июня 2018

В RSpec вы можете лениво устанавливать переменные, используя вспомогательный метод Memoized.Синтаксис называется let block .Выглядит это так:

describe "trucks" do
  let(:truck) { create(:truck) }
  let(:car) { create(:car) }

  it "has the same number of wheels as cars" do
    expect(car.wheels).to eq(truck.wheels)
  end

  it "has the same fuel type as cars" do
    expect(car.fuel_type).to eq(truck.fuel_type)
  end

  it "has power steering" do
    expect(truck.power_steering).to eq(true)
  end

end

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

Мне бы хотелосьсделать то же самое в Python.На данный момент я знаю, что я могу поделиться настройкой между тестами только с помощью блока настройки.Это выполняется для всех примеров в группе.

class TrucksTestCase(TestCase):
  def setup(self):
    self.truck = TruckFactory()
    self.car = CarFactory()

  def test_has_same_number_of_wheels_as_cars(self):
    self.assertEqual(self.car.wheels, self.truck.wheels)

  def test_has_same_fuel_type_as_cars(self):
    self.assertEqual(self.car.fuel_type, self.truck.fuel_type)

  def test_has_power_steering(self):
    self.assertTrue(self.truck.power_steering)

При этой настройке мы создаем автомобиль даже для третьего контрольного примера, который его не использует.Есть ли способ обойти это?

...