[英]How to respond to django.test.Client using the test database
我有一個django settings.py
文件,其中包含一個已配置的數據庫,該數據庫指向兩個mysql數據庫,我們將它們稱為dbname
和test_dbname
。
運行諸如python manage.py test ...
類的命令時,對象選擇如
MyClass.objects.all()
test_dbname
,將從test_dbname
選擇對象。
另一方面,如果我使用以下方法測試html頁面的生成
client = django.test.Client()
response = client.post(...)
然后創建client
對象和post
參數的測試代碼(或線程,我不確定)使用test_dbname
而用於post
請求並生成響應的線程使用dbname
(不帶test_前綴)。
這是一個不便,因為:
我可以使服務器線程使用可以通過測試用例線程控制的數據庫嗎?
感謝knbk提供了解決此問題的提示:答案是在單元測試開始之前不應運行任何查詢。 在我的情況下,這意味着替換諸如
class MyForm(forms.Form):
my_field = forms.ChoiceField(choices=<somequery>)
跑somequery
在導入文件之前,即測試用例跑,通過:
class MyForm(forms.Form):
my_field = forms.ChoiceField()
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(self, *args, **kwargs)
self.fields['my_field'].choices = <somequery>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.