小编Sar*_*ica的帖子

在Windows和Linux上进行C++编译:ifdef switch

我想在Linux和Windows上运行一些c ++代码.有些代码我只希望包含在一个操作系统中,而不包含在另一个操作系统中.是否有标准的#ifdef可以使用?

就像是:

  #ifdef LINUX_KEY_WORD
    ... // linux code goes here.
  #elif WINDOWS_KEY_WORD
    ... // windows code goes here.
  #else 
  #error "OS not supported!"
  #endif
Run Code Online (Sandbox Code Playgroud)

问题确实是重复的,但这里的答案要好得多,尤其是被接受的答案.

c++ linux windows conditional-compilation ifdefine

161
推荐指数
6
解决办法
17万
查看次数

模拟一个类:Mock()或patch()?

我正在使用Python的模拟,并想知道这两种方法中的哪一种更好(阅读:更多pythonic).

方法一:只需创建一个模拟对象并使用它.代码如下:

def test_one (self):
    mock = Mock()
    mock.method.return_value = True 
    self.sut.something(mock) # This should called mock.method and checks the result. 
    self.assertTrue(mock.method.called)
Run Code Online (Sandbox Code Playgroud)

方法二:使用补丁创建模拟.代码如下:

@patch("MyClass")
def test_two (self, mock):
    instance = mock.return_value
    instance.method.return_value = True
    self.sut.something(instance) # This should called mock.method and checks the result. 
    self.assertTrue(instance.method.called)
Run Code Online (Sandbox Code Playgroud)

两种方法都做同样的事情.我不确定这些差异.

谁能开导我?

python unit-testing mocking

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

py.test - 当调用不同目录中的测试时,测试发现失败

使用py.test,两个在不同目录中调用相同的测试会导致py.test失败.这是为什么?如何在不重命名所有测试的情况下更改此设置?

复制做:

; cd /var/tmp/my_test_module
; mkdir -p ook/test           
; mkdir -p eek/test
; touch ook/test/test_proxy.py
; touch eek/test/test_proxy.py
; py.test
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.4
collected 0 items / 1 errors 

==================================== ERRORS ====================================
___________________ ERROR collecting ook/test/test_proxy.py ____________________
import file mismatch:
imported module 'test_proxy' has this __file__ attribute:
  /home/ygolanski/code/junk/python/mymodule/eek/test/test_proxy.py
which is not the same as the test file we want to collect:
  /home/ygolanski/code/junk/python/mymodule/ook/test/test_proxy.py
HINT: remove __pycache__ / .pyc files and/or use …
Run Code Online (Sandbox Code Playgroud)

python unit-testing autodiscovery pytest

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

SQLAlchemy,将对象绑定到Session

出于各种原因,我试图从数据库中获取对象集合,并将其传递给另一个未连接到数据库的进程.我的代码看起来像下面的那个,但我一直在

sqlalchemy.exc.UnboundExecutionError: Instance <MyClass at 0x8db7fec> is not bound to a Session; attribute refresh operation cannot proceed
Run Code Online (Sandbox Code Playgroud)

当我尝试在get_list()方法之外查看列表中的元素时.

def get_list (obj):
    sesson = Session()
    lst = session.query(MyClass).all()
    session.close()
    return lst
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用它

def get_list_bis (obj)
    session = Session()
    return session.query(MyClass).all()
Run Code Online (Sandbox Code Playgroud)

我能够使用元素,但担心会话的状态,因为它没有关闭.

我在这里错过了什么?

python sqlalchemy

55
推荐指数
2
解决办法
4万
查看次数

ValueError:相关模型u'app.model'无法解析

我有两个应用程序(ook并且eek说),我想ook从模型中使用外键到模型eek.两者都是在INSTALLED_APPSook第一位.

ook.models.py,我有:

class Fubar(models.Model):
    ...
Run Code Online (Sandbox Code Playgroud)

eek.models.py,我有:

class monkey(models.Model):
    external = models.ForeignKey('ook.Fubar', blank=True, null=True)
    ...
Run Code Online (Sandbox Code Playgroud)

生成的迁移是:

class Migration(migrations.Migration):

    dependencies = [
        ('eek', '0002_auto_20151029_1040'),
    ]

    operations = [
        migrations.AlterField(
            model_name='monkey',
            name='external',
            field=models.ForeignKey(blank=True, to='ook.Fubar', null=True),
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

当我运行迁移时,我收到此错误:

   ...
   1595             raise ValueError('Foreign Object from and to fields must be
the same non-zero length')
   1596         if isinstance(self.rel.to, six.string_types):
-> 1597             raise ValueError('Related model %r cannot be resolved' % …
Run Code Online (Sandbox Code Playgroud)

django django-models django-migrations

31
推荐指数
4
解决办法
2万
查看次数

mockito ArrayList <String>问题

我有一个方法,我试图进行单元测试.此方法将参数作为ArrayList并使用它执行操作.我试图定义的模拟是:

ArrayList<String> mocked = mock(ArrayList.class);
Run Code Online (Sandbox Code Playgroud)

这给出了[未经检查]未经检查的转换"警告.

ArrayList<String> mocked = mock(ArrayList<String>.class);
Run Code Online (Sandbox Code Playgroud)

给了我一个错误.

任何人都想关心我做错了什么?

java unit-testing arraylist mocking mockito

29
推荐指数
2
解决办法
5万
查看次数

如何使用补丁相对路径进行模拟?

我在python测试文件中有这样的东西:

from mock import patch,
from ..monkey import ook
[...]
@patch('monkey.ook', Mock(return_value=None))
def test_run_ook (self, mock_ook):
    self.assertIsNone(ook())
    mock_ook.run.assert_called_once_with('')
Run Code Online (Sandbox Code Playgroud)

当我运行这个测试时,我得到了一个ImportError: No module named monkey.显然,我修补的道路是不对的.但是,我不知道如何使它权利,没有搞乱sys.pathPYTHONPATH.

有什么指针吗?

python unit-testing mocking

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

pylint重复代码误报

我在(很多)我的Python文件中有这个代码用于项目.

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from pprint import pformat
Run Code Online (Sandbox Code Playgroud)

Pylint抱怨说:

==ook:2
==eek:2
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from pprint import pformat (duplicate-code)
Run Code Online (Sandbox Code Playgroud)

虽然这是真的完全无关紧要.这些from __future__ [...]行是为了防止Python 2到Python 3的兼容性回归.因此,pylint不应该抱怨它们在不同的文件中是相似的.

有没有办法阻止pytlint这样做?

我知道,pylint: disable=duplicate-code但由于导入范围,这将禁用整个文件.但是,我不想为整个文件禁用它.

python pylint

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

整个测试套件的py.test SetUp/TearDown

我有一个需要访问X11的Python包.我想使用Xvfb,这样我就不必在构建机器上安装真正的X11 - 在这种情况下是Hudson.因此,我想在py.test启动时启动一个Xvfb服务器,使用该服务器进行所有测试,然后将其关闭.

我怎样才能做到这一点?


注意:我可以在每个测试类的SetUp(TearDown)中启动(停止)Xvfb服务器,但这有两个问题:首先,它是浪费的.其次,Fatal IO error 0 (Success) on X server如果我正确终止服务器或者挂起不死的Xvfb进程,它就会因为奇怪而无法正常工作.如果有兴趣的话,这是使用xvfbwrapper.

python unit-testing pytest xvfb

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

'/'在HDF5文件名称中混淆

我在h5py,PyTables(通过Pandas)和C++生成的HDF5文件之间经历了一些非常奇怪的交互.似乎h5checkh5py似乎应对包含'/'的类型名称,但pandas/PyTables不能.显然,我的理解存在差距,因此:

我在这里有什么不明白的?


血淋淋的细节

我在HDF5文件中有以下数据:

   [...]
   DATASET "log" {
      DATATYPE  H5T_COMPOUND {
         H5T_COMPOUND {
            H5T_STD_U32LE "sec";
            H5T_STD_U32LE "usec";
         } "time";
         H5T_IEEE_F32LE "CIF/align/aft_port_end/extend_pressure";
         [...]
Run Code Online (Sandbox Code Playgroud)

这是通过C++ API创建的.该h5check公用事业说,文件是有效的.

请注意,这CIF/align/aft_port_end/extend_pressure 并不是指组/节点/叶子的路径.它是一个标签,我们在内部使用,恰好有一些内部结构包含'/'作为分隔符.我们不希望HDF5文件对此有所了解:它不应该关心.显然,如果'/'在任何HDF5名称中都是非法的,那么我们必须将该分隔符更改为其他名称.

使用PyTables(好吧,Pandas但它内部使用PyTables)来读取文件,我得到了一个

 >>> import pandas as pd
 >>> store = pd.HDFStore('data/XXX-20150423-071618.h5')
 >>> store
/home/XXX/virt/env/develop/lib/python2.7/site-packages/tables/group. py:1156: UserWarning: problems loading leaf ``/log``::

  the ``/`` character is not …
Run Code Online (Sandbox Code Playgroud)

python hdf5 pytables h5py pandas

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