小编sas*_*ker的帖子

python中列表推导或生成器表达式的行继续

你怎么打破一个很长的列表理解?

[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]
Run Code Online (Sandbox Code Playgroud)

我也看到过某些人不喜欢使用'\'来分解线条,但却从不理解为什么.这背后的原因是什么?

python coding-style list-comprehension pep8

98
推荐指数
3
解决办法
3万
查看次数

如何使用nosetests分别组织和运行unittests和功能测试

我有以下典型的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中.

  • 组织不同测试的好方法是什么?按文件夹(功能/ vs单位/)?通过命名测试类的约定(ClassATest vs ClassAFunctionalTest)?或者通过命名测试方法的约定(classa_foo_test vs classa_bar_functional_test)?
  • 有人能解释一下nosetests的正则表达式匹配是如何工作的吗?选项-m,-i和-e似乎没有像我期望的那样运行.正则表达式是匹配目录(subpackage1),文件(classa_test)还是测试类(ClassATest)还是测试方法(classa_foo_test)?我非常困惑

python unit-testing functional-testing nose nosetests

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

谁知道nosetest的-m,-i和-e如何工作?

我试图通过鼻子测试来识别我的测试,但它没有正确运行我的任何测试.

我有以下文件结构

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选项

  • 我需要运行单元测试的正则表达式是什么(在单元/下,BarTest类中的测试)
  • 什么是我需要的正则表达式只运行功能测试(在函数/,在类FooFTest中的测试)

我已经尝试了各种组合,似乎无法通过鼻子测试来做我想要的一贯

python regex unit-testing nosetests

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

了解金字塔中的资源和上下文

请耐心等待,因为我刚刚开始使用金字塔.关于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的验证错误示例)

python resources url-routing pyramid

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

在mongoengine中更新嵌入文档列表字段的正确方法是什么?

我正在尝试定义对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)

这甚至是正确的方式去做这样的事情?

python mongoengine

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

sqlite 属性 execute 是只读的

我正在使用 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)

谢谢

python sqlite exception

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

pyramid_who(repoze.who)是对金字塔进行身份验证的首选方式吗?

我刚开始学习Pyramid Framework.pyramid_who(repoze.who)是进行身份验证的首选方式吗?

我还有其他选择吗?

python authentication repoze.who pyramid

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

如何动态更改 SQLAlchemy 声明模型上的列类型?

我正在生产中运行 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)

python sqlalchemy

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

在python中过滤掉电子邮件和域的最佳方法

我有一个电子邮件和域列表,我试图将其作为黑名单过滤掉

对于电子邮件,这很容易,因为我可以直接比较电子邮件,但对于域,还需要匹配带有子域等的电子邮件。

所以对于 foo.com 域,我需要过滤掉

x@foo.com
x@subdomain.foo.com
Run Code Online (Sandbox Code Playgroud)

这通常是如何完成的?通过正则表达式?将电子邮件拆分为适当的字符串?

python regex email filtering email-validation

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

禁用缓存装饰器以测试dogpile.cache

我最近从烧杯切换到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 pylons caching beaker dogpile.cache

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