你怎么打破一个很长的列表理解?
[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]
Run Code Online (Sandbox Code Playgroud)
我也看到过某些人不喜欢使用'\'来分解线条,但却从不理解为什么.这背后的原因是什么?
我有以下典型的python项目文件结构
packageA
+----subpackage1
+----classa.py
+----subpackage2
+----classb.py
+----test
+----subpackage1
+----classa_test.py
+----subpackage2
+----classb_test.py
Run Code Online (Sandbox Code Playgroud)
我目前正在尝试组织我的单元测试和功能测试,因此我可以使用nose单独运行unittests和功能测试,但也可以选择运行所有测试.测试将存在于packageA/test/subpackage1和packageA/test/subpackage2中.
我试图通过鼻子测试来识别我的测试,但它没有正确运行我的任何测试.
我有以下文件结构
Project
+----Foo/
+----__init__.py
+----bar.py
+----test/
+----__init__.py
+----unit/
+----__init__.py
+----bar_test.py
+----functional/
+----__init__.py
+----foo_test.py
Run Code Online (Sandbox Code Playgroud)
在bar_test.py内
class BarTest(unittest.TestCase):
def bar_1_test():
...
Run Code Online (Sandbox Code Playgroud)
在foo_test.py中
class FooFTest.py
def foo_1_test():
...
Run Code Online (Sandbox Code Playgroud)
使用-m,-i,-e nosetests选项
我已经尝试了各种组合,似乎无法通过鼻子测试来做我想要的一贯
请耐心等待,因为我刚刚开始使用金字塔.关于URL Dispatch,我无法理解Pyramid中的上下文和资源.我不太清楚文档中的描述意味着什么,上下文和资源有些循环(对我而言).
/organization/add_users资源组织还是用户?也,
应该包含的上下文对象是什么?本教程中的示例仅具有ACL,并且在init方法中没有任何内容.
class RootFactory(object):
__acl__ = [(...some permissions...)]
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)抛出异常(例如,禁止)在什么时候上下文发生变化?
当有类似Forbidden错误之类的东西时,我可以看到更改上下文的目的,但是在执行类似验证的操作时,为什么我应该抛出一个注册了不同view_callable的异常,当我可以简单地渲染到另一个模板时渲染到同一view_callable中的不同模板而不是抛出异常?(我在文档中看到了add_view的验证错误示例)
我正在尝试定义对mongoengine中嵌入文档的列表字段执行检查和更新的方法.做我正在做的事情的正确方法是什么.代码如下.
class Comment(EmbeddedDocument):
created = DateTimeField()
text = StringField()
class Post(Document):
comments = ListField(EmbeddedDocumentField(Comment))
def check_comment(self, comment):
for existing_comment in self.comments:
if comment.created == existing_comment.created and
comment.text == existing_comment.text:
return True
return False
def add_or_replace_comment(self, comment):
for existing_comment in self.comments:
if comment.created == existing_comment.created:
# how do I replace?
# how do I add?
Run Code Online (Sandbox Code Playgroud)
这甚至是正确的方式去做这样的事情?
我正在使用 sqlite 创建并连接到一个 sqlite db foo.db
当我尝试插入数据库时。我得到以下 AttributeError
AttributeError: 'sqlite3.Cursor' object attribute 'execute' is read-only
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到有关此错误的任何信息。有谁知道这个异常意味着什么?
我在 virtualenv 中使用 python 2.7。
以下是我试图执行的代码,假设日期是一个字符串。
username = 'user'
pwdhash = some_hash_function()
email = 'user@foo.com'
date = '11/07/2011'
g.db = sqlite3.connect('foo.db')
cur = g.db.cursor()
cur.execute = ('insert into user_reg (username,pwdhash,email,initial_date)\
values (?,?,?,?)',
[username,
pwdhash,
email,
date])
g.db.commit()
g.db.close()
Run Code Online (Sandbox Code Playgroud)
谢谢
我刚开始学习Pyramid Framework.pyramid_who(repoze.who)是进行身份验证的首选方式吗?
我还有其他选择吗?
我正在生产中运行 mysql,但想在内存数据库中的 sqlite 中运行一个简单的测试。
旧版 mysql db 的表中的列是 mysql 特定类型,在声明性模型中声明(子类化 declarative_base)。我想在不去 mysql 的情况下运行一些简单的测试,因此需要换出模型的列。
我该怎么做呢?我试过写一个修补程序/解补丁程序来换出我的模型中的表,但是当我运行一些测试时,我得到
OperationalError: (OperationalError) near ")": syntax error u'\nCREATE TABLE my_table (\n)\n\n' ()
Run Code Online (Sandbox Code Playgroud)
这让我认为我没有正确修补列。
有谁知道我怎么能做到这一点?我究竟做错了什么?
目前,我创建新列并将全新的 Table 对象附加到__table__并保存旧表。
DB 已创建,create_all() 和 convert_columns 在 setUp 中运行。drop_all() 和 revert_columns 在我的测试中的 tearDown 期间运行
mysql_sqlite_mapping = {INTEGER: Integer,
MEDIUMINT: Integer,
TEXT: text}
def convert_columns(self, my_class, mapping):
for column in my_class.__table__.columns:
if type(column.type) in mapping:
replacement_col = Column(column.name,
mapping[type(column.type)],
primary_key=column.primary_key,
nullable=column.nullable,
key=column.key,
unique=column.unique)
converted_columns.append(replacement_col)
self.registry[my_class] = my_class.__table__
my_class.__table__.metadata.remove(my_class.__table__)
my_class.__table__ …Run Code Online (Sandbox Code Playgroud) 我有一个电子邮件和域列表,我试图将其作为黑名单过滤掉
对于电子邮件,这很容易,因为我可以直接比较电子邮件,但对于域,还需要匹配带有子域等的电子邮件。
所以对于 foo.com 域,我需要过滤掉
x@foo.com
x@subdomain.foo.com
Run Code Online (Sandbox Code Playgroud)
这通常是如何完成的?通过正则表达式?将电子邮件拆分为适当的字符串?
我最近从烧杯切换到dogpile.cache.它在实时代码中运行良好,但我遇到了测试问题.如何禁用缓存进行测试?
我目前正在使用
#caching.py
from dogpile.cache import make_region
region = make_region().configure(
'dogpile.cache.redis',
expiration_time = 3600,
arguments = {
'host': '127.0.0.1',
'port': 6379
}
)
#db.py
from .caching import region
@region.cache_on_arguments()
def fetch_from_db(item):
return some_database.lookup(item)
Run Code Online (Sandbox Code Playgroud)
如何更换缓存或禁用它进行单元测试?
python ×10
nosetests ×2
pyramid ×2
regex ×2
unit-testing ×2
beaker ×1
caching ×1
coding-style ×1
email ×1
exception ×1
filtering ×1
mongoengine ×1
nose ×1
pep8 ×1
pylons ×1
repoze.who ×1
resources ×1
sqlalchemy ×1
sqlite ×1
url-routing ×1