Я использую FactoryBoy и Faker для создания некоторых моделей для модульных тестов. Генерировать данные для полей достаточно просто, но как сгенерировать строку, включающую значение, полученное от провайдера Faker?
import factory
import MyModel
class MyFactory(factory.django.DjangoModelFactory):
class Meta:
model = MyModel
# my_ip will be a temporary variable that is not returned by the factory.
exclude = (my_ip,)
my_ip = factory.Faker("ipv4_private")
my_string = f"String with IP address [{my_ip}]"
Затем с помощью MyFactory создаются объекты с my_string
, установленным примерно так:
String with IP address [<factory.faker.Faker object at 0x7fc656aa6358>]
Как я могу заставить my_string
содержать что-то вроде:
String with the IP address [192.168.23.112]
Как мне разрешить это значение, а не просто получить объект? Я пробовал обернуть в str() безуспешно. Нужно ли мне использовать LazyAttribute или LazyFunction или что-то из FactoryBoy?