有没有相当于rspec的python?

时间:2018-06-05 20:19:12

标签: python python-3.x testing rspec python-unittest

在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)

通过这种设置,我们甚至为第三个不使用它的测试用例创建了汽车。有办法解决这个问题吗?

0 个答案:

没有答案