3

我正在为使用 django TDD 的站点编写一些测试。

问题是当我手动转到测试服务器时。填写表格并提交,然后它似乎工作正常。但是当我使用 manage.py test wiki 运行测试时,它似乎跳过了视图中的部分代码。页面部分似乎都工作正常。但是代码中的 pagemod-parts 甚至我创建的 write() 只是为了看看发生了什么似乎被忽略了。

我不知道是什么原因造成的,似乎也找不到解决方案。有任何想法吗?

这是代码:

测试.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

然后我做:

测试.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 回答
0

现在这是很久以前的事了。

解决了,但解决方案有点尴尬。基本上,是我愚蠢。我不记得确切的细节,但我相信调用了不同的视图,而不是我在这里展示的视图。除了“跳过”部分之外,该视图具有相同的代码。

我向任何花时间调查此事的人道歉。

于 2014-06-19T09:26:26.493 回答