小编Cor*_*gan的帖子

鼻子忽略了自定义装饰器的测试

我的Python代码中有一些相对复杂的集成测试.我用自定义装饰器大大简化了它们,我对结果非常满意.这是我的装饰器看起来像一个简单的例子:

def specialTest(fn):

    def wrapTest(self):
        #do some some important stuff
        pass
    return wrapTest
Run Code Online (Sandbox Code Playgroud)

这是测试的样子:

class Test_special_stuff(unittest.TestCase):

    @specialTest
    def test_something_special(self):
        pass
Run Code Online (Sandbox Code Playgroud)

这很好用,并且由PyCharm的测试运行器执行没有问题.但是,当我使用Nose从命令行运行测试时,它会使用@specialTest装饰器跳过任何测试.我试图将装饰器命名为testSpecial,因此它匹配默认规则,但我的FN参数不会被传递.

我如何让Nose执行这些测试方法并按照预期处理装饰器?


感谢madjar,我通过重构我的代码看起来像这样,使用functools.wraps并更改包装器的名称:

from functools import wraps

def specialTest(fn):

    @wraps(fn)
    def test_wrapper(self,*args,**kwargs):
        #do some some important stuff
        pass
    return test_wrapper


class Test_special_stuff(unittest.TestCase):

    @specialTest
    def test_something_special(self):
        pass
Run Code Online (Sandbox Code Playgroud)

python ignore decorator nose

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

VS.NET:项目参考与大会参考

这里有一些争论,哪个更适合从其他项目引用我们的公共代码库:通过项目或汇编.我赞成引用该项目,特别是因为我们有自动化的单元测试,证明公共代码能够满足它的需要.

另一个阵营的想法是锁定那些项目,每月只发布一次或类似的东西.然后强制所有项目引用程序集.他们认为这将保护他们免于部署未经测试的代码.他们"太忙"无法编写自动化单元测试并将其项目配置为持续集成,我对此没有任何影响,所以请不要关注这方面.

这就是我能想到为什么项目参考是更好的解决方案的原因.我也在寻找其他意见.

优点:

  • 引用项目可确保您使用最新代码.你不必等待任何事情.
  • 减少重复.没有最新的代码,重新发明轮子的可能性更大.
  • 如果开发人员需要某些东西并且无法将其添加到它所属的程序集中,那么它将在任何可行的位置创建,从而产生许多不一致和代码重复.
  • 开发更容易,因为您可以轻松查看/调试引用代码中发生的情况.
  • 我们常见的东西并没有经常改变,但是当它发生时,它通常是有用的东西.为什么要增加额外的维护和汇编发布管理负担.

缺点:

  • 可能需要更长时间才能加载.
  • 将项目添加到新解决方案然后添加程序集引用可能需要稍长时间.

.net assemblies reference project visual-studio

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

如何在没有Mock的情况下存根Python方法

我是一个C#dev进入一些Python的东西,所以我不知道我现在在做什么.我已经读过你不需要使用Python的依赖注入.我被告知你可以在代码中实例化对象并让它们以你想要的方式运行,但是,你可以将这些对象上的方法指向我自己的测试中定义的存根 - 据说没有模拟.

这是真的?我试过这样做,并不能让它工作.这实际上是怎么做到的?如何在没有模拟库的情况下在Python中存根方法?

python unit-testing mocking stub

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

从装饰器获取Python函数的拥有类

我在PY有一个装饰师.它是一种方法,并将该函数作为参数.我想基于传递的函数创建一个基于目录的结构.我正在使用父目录的模块名称,但是想使用类名作为子目录.我无法弄清楚如何获取拥有fn对象的类的名称.

我的装饰者:

def specialTest(fn):
    filename = fn.__name__
    directory = fn.__module__
    subdirectory = fn.__class__.__name__ #WHERE DO I GET THIS
Run Code Online (Sandbox Code Playgroud)

python class function decorator inspect

7
推荐指数
2
解决办法
7397
查看次数

sqlalchemy运行时实体上的动态模式

我正在使用SQL Alchemy并且有一些特定于帐户的模式.模式的名称是使用帐户ID派生的,因此在我访问应用程序服务或存储库层之前,我没有模式的名称.我想知道是否可以针对在运行时动态设置其架构的实体运行查询?

我知道我需要设置__table_args__['schema']并尝试使用内置的type(),但我总是得到以下错误:

could not assemble any primary key columns for mapped table
Run Code Online (Sandbox Code Playgroud)

我已经准备好放弃直接编写sql,但我真的很讨厌这样做.知道如何做到这一点?我正在使用SA 0.99而且我确实有PK映射.

谢谢

python sqlalchemy postgresql-9.3

7
推荐指数
3
解决办法
3969
查看次数

SQLAlchemy - 将文本查询与过滤器结合使用

我使用的是SA 0.6.6,Python 2.66Postgres 8.3.

我有一些查询需要一些可以通过WITH RECURSIVE查询处理的复杂安全检查.我想要做的是将文本查询与查询对象结合起来,以便我可以根据需要应用过滤器.

我最初的想法是将我的文本查询创建为子查询,然后将其与用户的查询和过滤器相结合.不幸的是,这不起作用.

subquery = session.query(sharedFilterAlias).\
                   from_statement(sharedFilterQuery).subquery()
Run Code Online (Sandbox Code Playgroud)

这会导致此错误:

AttributeError: 'Annotated_TextClause' object has no attribute 'alias'
Run Code Online (Sandbox Code Playgroud)

反正将文本查询与SQLAlchemy的查询对象结合起来了吗?

python string text sqlalchemy filter

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