小编Nik*_*laj的帖子

如何测试或模拟"if __name__ =='__ main__'"内容

假设我有一个包含以下内容的模块:

def main():
    pass

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

我想为下半部分编写单元测试(我希望实现100%的覆盖率).我发现了runpy内置模块执行导入/ __name__设置机制,但我无法弄清楚如何模拟或以其他方式检查main()函数是否被调用.

这是我到目前为止所尝试的:

import runpy
import mock

@mock.patch('foobar.main')
def test_main(self, main):
    runpy.run_module('foobar', run_name='__main__')
    main.assert_called_once_with()
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing mocking python-import

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

保存或刷新 ReportLab 画布而不关闭

我有一个 ReportLab 脚本,可以生成一个大型 PDF 文件(数千页)。这是通过一个简单的 for 循环完成的,该循环为每次迭代创建一个页面。

但是,由于 canvas.save() 会关闭文件以进行进一步编辑,因此我必须等到 for 循环完成才能保存。这意味着随着 PDF 在内存中的增长,我的 Python 进程的内存使用量会膨胀到大约 250MB - 从我的应用程序的角度来看,这似乎是不必要的。

有没有办法在不关闭编辑的情况下保存或刷新 ReportLab 画布?

python pdf pdf-generation reportlab

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

防止篡改客户端地理编码结果

我们正在构建使用基于位置的定价的服务.用户可以输入地址并查看其区域中的价格,这由各种服务器端算法确定.然后可以根据这些价格订购商品.

我想知道在这种情况下我们是否可以使用客户端地理编码(以避免达到Google Maps API使用限制),例如用户输入他的地址,浏览器使用JS库获取地理编码结果并将其包含在表单提交中.问题是用户可能会篡改表单提交,并可能将订单下达到他的地址,以获取适用于不同坐标集的价格.

我想听听你对如何确保这一点的建议.例如,如果地理编码结果可以某种方式签名以验证它没有被篡改,那将是惊人的吗?

javascript security google-maps geocoding google-maps-api-3

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