с некоторых пор я использую инструменты Faker (Python Faker, Php Faker, Ruby Faker... ) для создания моих приборов для моих тестов или моих демонстрационных данных.
Я хочу всегда получать одни и те же сгенерированные данные, тогда я использую функция случайного начального числа, вот очень простой пример:
import unittest
from faker import Faker
fake = Faker()
fake.seed(4321)
# My model
class Contact(object):
def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname
class TestCase(unittest.TestCase):
def test_basic(self):
c1 = Contact(fake.first_name(), fake.last_name())
self.assertEqual(c1.firstname, u'Deonte')
self.assertEqual(c1.lastname, u'Jaskolski')
c2 = Contact(fake.first_name(), fake.last_name())
self.assertEqual(c2.firstname, u'Anika')
self.assertEqual(c2.lastname, u'Dare')
unittest.main()
Хорошо, все замечательно.
Далее я работаю над своим проектом, и мне нужно добавить новое поле в Contact :
class Contact(object):
def __init__(self, firstname, lastname, city):
self.firstname = firstname
self.lastname = lastname
self.city = city
Я обновляю свой тест:
class TestCase(unittest.TestCase):
def test_basic(self):
c1 = Contact(fake.first_name(), fake.last_name(), fake.city())
self.assertEqual(c1.firstname, u'Deonte')
self.assertEqual(c1.lastname, u'Jaskolski')
self.assertEqual(c1.city, u'East Freddieside')
c2 = Contact(fake.first_name(), fake.last_name(), fake.city())
self.assertEqual(c2.firstname, u'Allison')
self.assertEqual(c2.lastname, u'Dibbert')
self.assertEqual(c2.city, u'West Leathabury')
Если вы посмотрите утверждения «c2.firstname» и «c2.lastname» в первом и втором тестах, вы увидите мою боль: когда я вставляю новые фальшивые данные в середине создания своих фикстур, мне нужно обновить все следующие утверждения. .
Это не проблема с небольшим тестом, но это очень болезненные множественные тесты.
У вас есть какие-нибудь советы по этому вопросу?
Я думал об использовании многих экземпляров генератора случайных чисел, как вы думаете, это хорошее направление?