2012-10-01 29 views
3

我正在爲使用django TDD的站點編寫一些測試。TDD Django測試似乎跳過視圖代碼的某些部分

問題是,當我手動去測試服務器。填寫表格並提交它,然後它似乎工作正常。但是當我使用manage.py測試wiki來運行測試時,它似乎忽略了視圖中的部分代碼。頁面部分似乎都很好。但是,代碼中的pagemod-parts,甚至是我爲了看看發生了什麼而創建的write()似乎都被忽略了。

我不知道是什麼可能導致這一點,似乎無法找到解決辦法。有任何想法嗎?

這是代碼:

test.py

#imports 
class WikiSiteTest(LiveServerTestCase): 
.... 
def test_wiki_links(self): 
    '''Go to the site, and check a few links''' 
    #creating a few objects which will be used later 
    ..... 
    #some code to get to where I want: 
    ..... 

    #testing the link to see if the tester can add pages 
    link = self.browser.find_element_by_link_text('Add page (for testing only. delete this later)') 
    link.click() 

    #filling in the form 
    template_field = self.browser.find_element_by_name('template') 
    template_field.send_keys('homepage') 
    slug_field = self.browser.find_element_by_name('slug') 
    slug_field.send_keys('this-is-a-slug') 
    title_field = self.browser.find_element_by_name('title') 
    title_field.send_keys('this is a title') 
    meta_field = self.browser.find_element_by_name('meta_description') 
    meta_field.send_keys('this is a meta') 
    content_field = self.browser.find_element_by_name('content') 
    content_field.send_keys('this is content') 

    #submitting the filled form so that it can be processed 
    s_button = self.browser.find_element_by_css_selector("input[value='Submit']") 
    s_button.click() 
    # now the view is called 

和視圖:

views.py

def page_add(request): 
'''This function does one of these 3 things: 
    - Prepares an empty form 
    - Checks the formdata it got. If its ok then it will save it and create and save 
     a copy in the form of a Pagemodification. 
    - Checks the formdata it got. If its not ok then it will redirect the user back''' 
..... 

if request.method == 'POST': 
    form = PageForm(request.POST) 
    if form.is_valid(): 
     user = request.user.get_profile() 
     page = form.save(commit=False) 
     page.partner = user.partner 
     page.save() #works 

     #Gets ignored 
     pagemod = PageModification() 
     pagemod.template = page.template 
     pagemod.parent = page.parent 
     pagemod.page = Page.objects.get(slug=page.slug) 
     pagemod.title = page.title 
     pagemod.meta_description = page.meta_description 
     pagemod.content = page.content 
     pagemod.author = request.user.get_profile() 
     pagemod.save() 
     f = open("/location/log.txt", "w", True) 
     f.write('are you reaching this line?') 
     f.close() 
     #/gets ignored 

     #a render to response 

再後來我做的:

test.py

print '###############Data check##################' 
print Page.objects.all() 
print PageModification.objects.all() 
print '###############End data check##############' 

並獲得:

終端:

###############Data check################## 
[<Page: this is a title 2012-10-01 14:39:21.739966+00:00>] 
[] 
###############End data check############## 

所有的進口都很好。在被忽略的代碼之後放置page.save()沒有任何區別。 只有在通過TDD測試運行時纔會發生這種情況。

在此先感謝。

回答

0

現在這是很久以前。

它被解決了,但解決方案有點令人尷尬。基本上,這是我愚蠢的。我不記得確切的細節,但我相信不同的觀點被稱爲,而不是我在這裏展示的。除了「跳過」部分,該視圖具有相同的代碼。

對於那些花時間研究這個問題的人,我表示歉意。

0

非常奇怪。難道這個視圖在Pagemodification階段出錯?你有沒有在你的測試中得到任何檢查,斷言視圖的響應是正確的,即500錯誤不會被返回?