小编Art*_*kov的帖子

当日志在不同进程中发出时,caplog 中的消息为空

我正在使用 log_cli=true 运行测试。剧本:

import logging
import sys
from multiprocessing import Process

logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)

logger = logging.getLogger("leapp.actors.quagga_report")


class ActorContext:
    def __init__(self):
        self.log = logger

    def run(self):
        self.log.debug("Some msg")


current_actor_context = ActorContext()


def test_caplog_fails(caplog):
    with caplog.at_level(logging.DEBUG, logger="leapp.actors.quagga_report"):
        p = Process(target=current_actor_context.run)
        p.start()
        p.join()
    assert "Some msg" in caplog.text


def test_caplog_passes(caplog):
    with caplog.at_level(logging.DEBUG, logger="leapp.actors.quagga_report"):
        current_actor_context.run()
    assert "Some msg" in caplog.text

Run Code Online (Sandbox Code Playgroud)

pytest log_cli 在两个测试中显示日志消息,但是,caplog 仅看到第二个测试的消息。

第一次测试失败并出现以下回溯:

-------------------------------- live log call ---------------------------------
| 13:39:20 | 40212 | leapp.actors.quagga_report | DEBUG | test_logger_caplog_fails.py | Some msg
FAILED …
Run Code Online (Sandbox Code Playgroud)

python fixtures pytest

6
推荐指数
1
解决办法
2563
查看次数

在python中包装Microsoft Dynamics Business Connector .net程序集

我正在为Microsoft Dynamics Business Connector .net程序集编写一个python包装器.

这是我的代码:

"""Implements wrapper for axapta bussiness connector."""

import pathlib
from msl.loadlib import LoadLibrary
import clr

DLL_PATH = pathlib.Path(__file__).parent / 'Microsoft.Dynamics.BusinessConnectorNet.dll'


def test_msl_connector():
    """Get Axapta object via msl-loadlib package."""
    connectorLL = LoadLibrary(DLL_PATH, 'net')
    Axapta = getattr(connectorLL.lib,
                     'Microsoft.Dynamics.BusinessConnectorNet').Axapta
    return Axapta


def test_pure_pythonnet_connector():
    """Get Axapta object via pythonnet package."""
    clr.AddReference(str(DLL_PATH))
    from Microsoft.Dynamics.BusinessConnectorNet import Axapta
    return Axapta
Run Code Online (Sandbox Code Playgroud)

运行pytest时这是我的错误:

============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.4.0, py-1.5.2, pluggy-0.6.0
rootdir: C:\Users\AZ\Desktop\test_bom-mcs, inifile:
collected 2 items

test_main.py FF …
Run Code Online (Sandbox Code Playgroud)

.net python windows axapta python.net

5
推荐指数
1
解决办法
358
查看次数

添加对名称和命名空间中包含点的.net程序集的引用

我试图引用在命名空间中有点的程序集.

sys.path.append(assemblyPath)

clr.FindAssembly(r"isc.Eng.Hov")
clr.AddReference(r"isc.Eng.Hov")

print 'isc.Eng.Hov' in clr.ListAssemblies(False)

from isc.Eng.Hov import *
Run Code Online (Sandbox Code Playgroud)

口译员提出错误:

Traceback (most recent call last):
True
  File "/mnt/86f8c6c8-9099-4f32-be68-486a12918546/GoogleDrive/__BACKLOG/RMK_API_LIB/rmkSuppliersDLLswrappers/scr/Hoval/__phex_hoval_dllwrapper.py", line 14, in <module>
    from isc.Eng.Hov import *
ImportError: No module named isc.Eng.Hov
Run Code Online (Sandbox Code Playgroud)

如何排除故障?

.net python .net-assembly python.net

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

仅在 __attrs_post_init__ 结束后运行属性验证器

我有:

@attr.s
class Example:
    number = attr.ib(validator=attr.validators.instance_of(int), init=False)

    def __attrs_post_init__(self):
        self.number = 'string'
        print('It seems, validation was running before:(')


t = Example()
Run Code Online (Sandbox Code Playgroud)

这里如何正确设置验证?我想在实例化后验证 self.number。

python python-attrs

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

使用函数签名禁用自动(预览)窗口(缓冲区)

每次我单击点时,函数签名都会出现在单独的缓冲区中。

import sys

sys.argv   # in this moment I have a separate buffer opened with sys.argv signature
Run Code Online (Sandbox Code Playgroud)

那么这个缓冲区一直存在,直到手动关闭。

我只想在按下 时才拥有它ctrl-K。或者至少当我退出插入模式时它会消失......

vim python-mode

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