小编Pfu*_*Guy的帖子

如何使用'with'语句获取单元测试Python Lock?

使用Python 2.6.6

所以我刚刚了解到以下内容:

myLock.acquire()
doStuff()
myLock.release()
Run Code Online (Sandbox Code Playgroud)

可以替换为:

with myLock:
  doStuff()
Run Code Online (Sandbox Code Playgroud)

我的问题是,使用前面的代码,我可以通过模拟Lock来单元测试锁被用来保护做事.但是对于后者,我的单元测试现在(预期)失败,因为没有调用acquire()和release().因此,对于后一种情况,我如何验证锁是否用于保护做事?

我更喜欢第二种方法,因为它不仅更简洁,而且我不可能编写忘记解锁资源的代码.(不是说我以前做过那个......)

python multithreading python-unittest

7
推荐指数
1
解决办法
821
查看次数

CMake&Visual Studio:如何快速,安静的命令行构建?

我有一个cmake项目,成功完成了我想要的一切.但我有大约100个文件,我厌倦了看到生成的巨大输出,每次只需要重新编译单个文件时每个文件30行.

要清楚,我正在编译cmake --build . 以获得此结果.

我需要传递给编译器(或MSBuild)以跳过它检查未更改文件的打印的参数是什么?在Visual Studio中编译项目不会创建所有这些可视垃圾.

这是我为每个未更改的文件获取的输出:

Project "C:\noscan\working\proj\build\ALL_BUILD.vcxproj" (1) is building "C:\noscan\working\proj\build\os\src\oslib.vcxproj" (54) on node 1 (default targets).
InitializeBuildStatus:
  Creating "oslib.dir\Debug\oslib.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
PreBuildEvent:
  Description: Automatic MOC for target oslib
  setlocal
  cd C:\noscan\working\tadet\build\os\src
  if %errorlevel% neq 0 goto :cmEnd
  C:
  if %errorlevel% neq 0 goto :cmEnd
  C:\cmake\bin\cmake.exe -E cmake_autogen     C:/noscan/working/tadet/build/os/src/CMakeFiles/oslib_autogen.dir Debug
  if %errorlevel% neq 0 goto :cmEnd
  :cmEnd
  endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
  :cmErrorLevel
  exit /b %1
  :cmDone
  if %errorlevel% neq 0 …
Run Code Online (Sandbox Code Playgroud)

c++ msbuild cmake visual-studio-2017

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

Python补丁模拟似乎被调用,但断言失败

我正在使用 Python 2.6.6

我想要做的是用 Mock 替换对象的创建,以确保进行正确的调用。应该是直截了当的。

我的模块:

import dir.SubModule

class Cls( object ):
    def Start( self ):
        self.__obj = dir.SubModule.SubCls()
        self.__obj.foo()
Run Code Online (Sandbox Code Playgroud)

我的测试:

import MyModule
import unittest
from mock import Mock, MagicMock, patch

class MyTest( unittest.TestCase ):
    def setUp( self ):
        self.uut = MyModule.Cls()

    def test_one( self ):
        with patch( 'dir.SubModule.SubCls', spec=True ) as mockObj:
            print "mock calls before"
            print mockObj.mock_calls
            self.uut.Start()

            print "called: "      + str( mockObj.called )
            print "foo called: " + str( mockObj.foo.called )
            print "call_count: "  + …
Run Code Online (Sandbox Code Playgroud)

python unit-testing python-unittest python-unittest.mock

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