3

django TDD を使用してサイトのテストを書いています。

問題は、手動でテストサーバーにアクセスするときです。フォームに入力して送信すると、問題なく動作するようです。しかし、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

とビュー:

ビュー.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 テストを実行した場合にのみ発生します。

前もって感謝します。

4

2 に答える 2

0

とても奇妙です。ビューがPagemodificationステージで何らかのエラーを起こしている可能性はありますか? ビューからの応答が正しく送信されていること、つまり 500 エラーが返されていないことを確認するために、後でテストを行いましたか?

于 2012-10-02T13:59:00.073 に答える