小编Dem*_*cht的帖子

从coverage报告中排除abstractproperties

我有一个抽象的基类:

class MyAbstractClass(object):
    __metaclass__ = ABCMeta

    @abstractproperty
    def myproperty(self): pass
Run Code Online (Sandbox Code Playgroud)

但是当我在我的项目中运行nosetests(覆盖率)时,它会抱怨属性def line未经测试.它实际上无法测试(AFAIK),因为抽象类的实例化将导致异常被引发.

有没有解决方法,或者我只需要接受<100%的测试覆盖率?

当然,我可以删除ABCMeta用法并简单地提升基类NotImpementedError,但我更喜欢前一种方法.

python code-coverage abc nosetests coverage.py

23
推荐指数
3
解决办法
4577
查看次数

可选的URL变量

有没有办法在Flask中使用可选的URL参数定义URL?基本上,我想要做的是定义允许选择指定语言的规则:

/
/de -> matches / (but doesn't collide with /profile)
/profile 
/de/profile
Run Code Online (Sandbox Code Playgroud)

我想我已经找到了一种方法,但它涉及要么改变Werkzeug和Flask如何处理请求(猴子修补或分支框架源).这似乎是一个处理这个问题的过于复杂的方式..有一种更简单的方法可以做到这一点,我忽略了吗?

编辑:

基于Brian的回答,这是我想出的:

app.py:

from loc import l10n

def create_app(config):                                                                                                                 
    app = Flask(__name__)                                                                                                               
    app.config.from_pyfile(config)                                                                                                      

    bp = l10n.Blueprint()                                                                                                               
    bp.add_url_rule('/', 'home', lambda lang_code: lang_code)                                                                           
    bp.add_url_rule('/profile', 'profile', lambda lang_code: 'profile: %s' % 
        lang_code)
    bp.register_app(app)                                                                                                                

    return app  

if __name__ == '__main__':
    create_app('dev.cfg').run()
Run Code Online (Sandbox Code Playgroud)

LOC/l10ln.py

class Blueprint(Blueprint_):
    def __init__(self):
        Blueprint_.__init__(self, 'loc', __name__)

    def register_app(self, app):
        app.register_blueprint(self, url_defaults={'lang_code': 'en'})                                                                  
        app.register_blueprint(self, url_prefix='/<lang_code>')

        self.app = app
Run Code Online (Sandbox Code Playgroud)

(我还没有lang_code从变量列表中提取,但很快就会这样做)

现在那只是热门的imho.

python url-routing flask

6
推荐指数
2
解决办法
2940
查看次数

为什么这个jQuery对象未定义?

$(function () {
            var mainimagepanel = $("#blah1");
            var postimagepanel = $("#blah2");
   });
Run Code Online (Sandbox Code Playgroud)

这两个对象都存在于我运行$ $的页面上.有人可以告诉我为什么我得到了异常mainimagepanel没有定义

Firebug或Chrome开发工具中导致的异常.所以有人可以告诉我原因以及我如何检查两者上是否存在输入控件.

html jquery

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

Python线程:我缺少什么?(task_done()调用次数太多)

我为前面的长篇大论道歉.希望它能为解决方案提供足够的背景信息.我试图创建一个实用程序函数,它将使用任意数量的旧函数并将classmethod它们粘贴到多线程队列中:

class QueuedCall(threading.Thread):

    def __init__(self, name, queue, fn, args, cb):
        threading.Thread.__init__(self)
        self.name = name

        self._cb = cb
        self._fn = fn
        self._queue = queue
        self._args = args

        self.daemon = True
        self.start()

    def run(self):
        r = self._fn(*self._args) if self._args is not None \
            else self._fn()

        if self._cb is not None:
            self._cb(self.name, r)

            self._queue.task_done()
Run Code Online (Sandbox Code Playgroud)

这是我的调用代码的样子(在一个类中)

data = {}
def __op_complete(name, r):
    data[name] = r

q = Queue.Queue()

socket.setdefaulttimeout(5)

q.put(QueuedCall('twitter', q, Twitter.get_status, [5,], __op_complete))
q.put(QueuedCall('so_answers', q, StackExchange.get_answers,
    ['api.stackoverflow.com', 534476, 5], __op_complete))
q.put(QueuedCall('so_user', …
Run Code Online (Sandbox Code Playgroud)

python queue multithreading

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

PHP - 读取8位整数

我有一个全是 8 位整数的二进制文件。我尝试使用 php unpack() 函数,但无法获取任何适用于 1 字节整数的参数。我尝试将数据与虚拟字节组合起来,以便我可以使用“n”/“v”参数。我正在使用 Windows 机器来执行此操作。最终我想要一个函数返回基于 8 位二进制整数字符串的整数数组。我尝试过的代码如下 -

$dat_handle = "intergers.dat";
$dat_file = fopen($dat_handle, "rb");
$dat_data = fread($dat_file, 1);
$dummy = decbin(0);
$combined = $dummy.$dat_data;
$result = unpack("n", $combined);
Run Code Online (Sandbox Code Playgroud)

php binary integer unpack pack

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