一段时间以来,我使用 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”断言,你会看到我的痛苦:当我在我的夹具生成中间插入新的假数据时,我需要更新以下所有断言.
小测没问题,但是多测就很痛苦了。
你对这个问题有什么建议吗?
我考虑过使用许多随机生成器实例,你认为这是一个好的方向吗?