小编Nic*_*mek的帖子

Python:在测试函数的同一模块中定义的修补函数

我一直在使用Python的unittest.mock库,但是现在我正在努力解决可能无法正确处理的用例.

考虑一个mymodule/code.py包含以下代码段的文件:

def sum():
  pass

def mul():
  pass

def div():
  pass

def get_functions():
  return [sum, mul, div]

def foo():
  functions = get_functions()
  for func in functions:
    func()
Run Code Online (Sandbox Code Playgroud)

我想测试的foo功能,修补sum功能,并留下muldiv,因为它们.这是我最初尝试过的:

class TestFoo(unittest.TestCase):
  @mock.patch('mymodule.code.foo.sum')
  def test_foo(foo_sum_mock):
    foo()
    foo_sum_mock.assert_called_once()
Run Code Online (Sandbox Code Playgroud)

但是,上面说明的修补方法不起作用.我相信sum在加载时该函数已正确修补mymodule.code.py,但由于def sum()块而重新定义.

通过阅读官方文档,我还尝试使用库的startstop函数unittest.mock如下:

def test_foo():
  patcher = mock.patch('module.code.sum')
  mocked_sum_fun = patcher.start()

  foo()

  mocked_sum_fun.assert_called_once()
  mock_sum_fun.stop()
Run Code Online (Sandbox Code Playgroud)

这种方法也行不通.我希望它会summodules/code.py文件加载后避免函数覆盖.

是否可以修补本地功能,如sum …

python unit-testing patch mocking python-unittest.mock

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

安全iOS文本字段似乎调整文本大小.怎么避免这个?

我在iOS7中遇到了一个安全文本字段的奇怪问题.这似乎是一个愚蠢的细节,但我想解决它.

事实证明我有两个文本字段,一个用于插入用户名,另一个用作用户密码的输入.问题是,当我在密码字段中插入文本时,点大小变小,但是当这个安全文本字段停止作为第一响应者时,点的大小变为它应该的大小(大于第一响应者时) .

作为一个ilustration,看看从我的应用程序中提取的这两个图像:

非第一响应者:

非第一响应者

急救人员:

在此输入图像描述

如您所见,点的大小会根据安全文本字段是否为第一响应者而更改.

有没有办法避免这种大小调整?

谢谢大家.

附加信息:

  • 我正在使用外部文本字体,似乎在文本字段上工作正常.

  • 两个文本字段的文本大小均为17.0.

  • 字体类型和字体大小都在文本字段所在的ViewController的ViewDidLoad方法中设置.

textfield ios

5
推荐指数
0
解决办法
1263
查看次数

有没有办法在文件中存储自定义颜色并从iOS中的代码访问它们?

我是iOS新手,但我有一些Android编程经验.我记得在Android中你可以在colors.xml文件中定义一组可以在代码中使用的自定义颜色,因此,每次必须在某处应用时,无需以编程方式定义新颜色.

我的问题是:iOS中是否存在类似的机制?我在整个互联网上搜索了一种在某个文件中创建自定义颜色的方法,并在我的iOS应用程序中以编程方式使用它们但却一无所获.

提前致谢.

ios

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