我最近从使用常规旧测试切换到使用 WebTest 和这个“No Database Test Runner”
from django.test.simple import DjangoTestSuiteRunner
class NoTestDbDatabaseTestRunner(DjangoTestSuiteRunner):
def setup_databases(self, **kwargs):
pass
def teardown_databases(self, old_config, **kwargs):
pass
这是一个示例测试,它必须以某种方式访问数据库......
怎么了?我的测试是否命中数据库但回滚到某个旧状态?测试到测试我可以看到每个创建的列表都有一个递增的 id。
def test_image_upload(self):
form_data = self.listing_form_defaults.copy()
form_data['images-TOTAL_FORMS'] = '3'
upload_files = [
('images-0-image', 'testdata/1.png'),
('images-1-image', 'testdata/2.png'),
('images-2-image', 'testdata/3.png'),
]
form_resp = self.app.post(
reverse('listing_create'),
form_data,
upload_files=upload_files,
user='kmike'
).follow()
assert len(form_resp.context['listing'].images.all()) == 3
form_resp.context['listing'].images.all()
必须要访问数据库,我已经找到print
了,它有来自我的数据库的数据库记录。
我只是很困惑——我的测试运行得非常快,似乎并没有真正改变我的数据库,这是如何工作/发生的?!