我使用factory_boy來創建測試裝置。我有兩個簡單的工廠,由SQLAlchemy模型(簡化如下)支持。避免與factory_boy工廠重複使用
我希望能夠多次呼叫AddressFactory.create()
,並且如果它不存在則創建Country
,否則我希望它重新使用現有記錄。
class CountryFactory(factory.Factory):
FACTORY_FOR = Country
cc = "US"
name = "United States"
class AddressFactory(factory.Factory):
FACTORY_FOR = Address
name = "Joe User"
city = "Seven Mile Beach"
country = factory.SubFactory(CountryFactory, cc="KY", name="Cayman Islands")
我的問題是:我怎麼可以設置這些工廠,使factory_boy不會嘗試創建一個新的國家或地區每創造出一個地址的時間?
你看看[factory.alchemy](https://github.com/rbarrois/factory_boy/blob/master/factory /alchemy.py)? – javex
不確定你在那個鏈接中指的是什麼;這個特定文件中沒有任何東西似乎有幫助。我已經查看了factory_boy和SQLAlchemy工廠的文檔,但我沒有看到有關重新使用記錄的任何信息。基本上尋找「查找或創建」類型的功能。 –
經過對此的更多研究後,簡短的回答是你不能這樣做。支持[使用Django模型獲取或創建](https://factoryboy.readthedocs.org/en/latest/orms.html#factory.django.DjangoModelFactory.FACTORY_DJANGO_GET_OR_CREATE),但不支持SQLAlchemy。我將這個問題解決了,因爲我希望爲這些日子中的一個添加SQLAlchemy支持,如果沒有人能夠勝任我的話。 –