小编Hak*_* B.的帖子

Django LiveServerTestCase:在setUpClass方法中创建的用户在test_method中不可用?

我正在使用Django 1.4的LiveServerTestCase进行Selenium测试,并且遇到了setUpClass类方法的问题.据我所知MembershipTests.setUpClass,在单元测试运行之前运行一次.

我已经将代码添加到数据库中,MembershipTests.setUpClass但是当我运行MembershipTests.test_signup测试时,没有用户添加到测试数据库中.我做错了什么?我希望我创建的用户setUpClass可以在所有单元测试中使用.

如果我将用户创建代码放入MembershipTests.setUp并运行,MembershipTests.test_signup我可以看到用户,但不希望在每个单元测试之前运行setUp.如您所见,我使用自定义LiveServerTestCase类在我的所有测试中添加基本功能(test_utils.CustomLiveTestCase).我怀疑这与我的问题有关.

提前致谢.

test_utils.py:

from selenium.webdriver.firefox.webdriver import WebDriver
from django.test import LiveServerTestCase

class CustomLiveTestCase(LiveServerTestCase):

    @classmethod
    def setUpClass(cls):
        cls.wd = WebDriver()
        super(CustomLiveTestCase, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        cls.wd.quit()
        super(CustomLiveTestCase, cls).tearDownClass()
Run Code Online (Sandbox Code Playgroud)

tests.py:

from django.contrib.auth.models import User
from django.test.utils import override_settings
from test_utils import CustomLiveTestCase 
from test_constants import *

@override_settings(STRIPE_SECRET_KEY='xxx', STRIPE_PUBLISHABLE_KEY='xxx')
class MembershipTests(CustomLiveTestCase):

    fixtures = [
        'account_extras/fixtures/test_socialapp_data.json',
        'membership/fixtures/basic/plan.json',
    ]

    def …
Run Code Online (Sandbox Code Playgroud)

python django selenium django-testing

11
推荐指数
2
解决办法
3669
查看次数

如何覆盖Django中安装的应用程序中定义的模型?

是否可以重新定义INSTALLED_APP中使用的模型而无需修改相关应用程序?例如,django-basic-blog有一个Post模型,我想添加一个字段.我可以直接编辑django-basic-blog但是为了代码可移植性,我想在它之上构建.我不想继承子类,因为我想保留对Post模型的所有现有引用.提前致谢!

django

8
推荐指数
1
解决办法
1323
查看次数

显示Django项目中所有测试的列表

是否有一种简单的方法可以在不运行测试的情况下获取Django项目中的所有测试列表?我希望有类似的东西./manage.py test --list.

testing django django-testing

7
推荐指数
1
解决办法
2477
查看次数

覆盖 Django 管理模板时如何访问模型数据?

抱歉,如果这是一个显而易见的问题,但我已经搜索了几天,但未能得出结果。

我正在创建一个简单的照片库应用程序。有四个画廊,每个画廊包含一张照片(照片由“之前”图像、“之后”图像和标题组成)。我正在尝试使用 django-admin 允许用户单击图库,然后添加照片。

我正在使用 TabularInline 编辑每个图库中的照片。除了 TabularInline 上的默认列之外,我还想添加一个列,显示“之前”照片和“之后”照片的缩略图预览(我为此使用简单缩略图)。经过大量搜索后,最好的方法似乎是覆盖 django-admin tabularInline.html 模板并自己添加列 - 所以我创建了另一个副本并现在尝试编辑它。

我想做的只是引用我要覆盖的 Django 管理模板中的 Photo 对象 - 但我不知道要使用的适当标签。我需要参考,这样我就可以将它与 easy-thumbnails 缩略图标签结合使用......但我一生都无法找出引用该对象的模板标签。我尝试过迭代 ModelForm、FormSet 和 FieldSet 对象,但似乎没有一个对象给我直接引用该对象。

# models.py

class Gallery(models.Model):
    name = models.CharField(max_length=200)
    url = models.CharField(max_length=200)
    desc = models.TextField()

    def __unicode__(self):
    return self.name

class Photo(models.Model):
    gallery = models.ForeignKey(Gallery)
    before = models.ImageField(upload_to='gallery')
    after = models.ImageField(upload_to='gallery')
    caption = models.CharField(max_length=1000)
    order = models.IntegerField(blank = True, null = True)

def __unicode__(self):
        return "Photo " + str(self.order)    

# admin.py
class GalleryForm(forms.ModelForm):
model = …
Run Code Online (Sandbox Code Playgroud)

django django-admin

3
推荐指数
1
解决办法
4637
查看次数

字符串只能包含A,U,G或C.

原谅这个简单化的问题,但我已经阅读了SO问题和Python文档,但仍未能解决这个问题.

如何创建Python正则表达式来测试字符串是否包含ANY,但只包含A,U,G和C字符?字符串可以包含其中一个或所有字符,但如果它包含任何其他字符,我希望正则表达式失败.

我试过了:

>>> re.match(r"[AUGC]", "AUGGAC")
<_sre.SRE_Match object at 0x104ca1850>
Run Code Online (Sandbox Code Playgroud)

但是在字符串的末尾添加一个X仍然有效,这不是我所期望的:

>>> re.match(r"[AUGC]", "AUGGACX")
<_sre.SRE_Match object at 0x104ca1850>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

python regex

1
推荐指数
1
解决办法
139
查看次数