Python 为什么在使用请求\u mock时,覆盖率报告某些机器上的无效信息?

Python 为什么在使用请求\u mock时,覆盖率报告某些机器上的无效信息?,python,macos,python-requests,requests-mock,Python,Macos,Python Requests,Requests Mock,以下代码路径: def _get_token(url, data): print('will show covered') response = requests.post(url, data=data) print('will not show covered but will still print') access_token = response.json().get('access_token') return 'Bearer {0}'.form

以下代码路径:

def _get_token(url, data):
    print('will show covered')
    response = requests.post(url, data=data)
    print('will not show covered but will still print')
    access_token = response.json().get('access_token')
    return 'Bearer {0}'.format(access_token)
在与
请求\u mock
一起运行时,会导致覆盖率为我们错误地报告其行:

import requests_mock
def test_parse_response(self):
    with requests_mock.mock() as rm:
        rm.post(token_url, status_code=200, json={'access_token': 'ACCESSTOKEN'})
        self.assertEqual( _get_token(token_url, {}), 'Bearer ACCESSTOKEN')
在某些机器上,
requests.post
行之后的行被错误地报告(因为它们没有报告所覆盖行的覆盖范围)。但是,关闭wifi会导致这些线路覆盖(?)

测试将使用tox和repo根目录中的tox.ini文件运行,该文件将测试命令设置为:

[testenv]
nosetests --exclude-dir=mypackage/test/donttestme --cover-xml --cover-xml-file=coverage_file.xml
使用包含以下内容的setup.cfg:

[nosetests]
with-coverage=true
cover-erase=true
cover-package=mypackage
cover-min-percentage=100
cover-branches=true
with-xunit=true

[coverage:report]
exclude_lines =
    if __name__ == .__main__.:
    pragma: no cover
我已经缩小了范围:

  • 正在执行代码路径(否则测试将失败,代码路径将被命中)
  • 更改请求\u mock returns会导致测试失败
  • 所有安装的python/软件包版本(无论是在虚拟环境中还是在全球范围内)都是相同的
    • codecov==2.0.5,覆盖率==4.2,nose==1.3.7,nose exclude==0.4.1,请求==2.11.0,请求模拟==1.3.0
  • OSX的版本是相同的(10.11.6-尽管其他版本的用户也看到了这一点)
  • 已验证的etc/主机正常
  • 在macbook pro上,视网膜(因此wifi禁用是通过使用菜单选项禁用)
  • 问题发生在
    请求之后。post
    -不报告未来所有行(不包括
    post
    行)
  • 对于27、3.5和3.6 python,tox中的行为是相同的
  • Python已随brew一起安装
  • 当从pyenv/virtualenv运行tox时,两者都显示相同的行为
对于我们团队中的大约50%的人来说,完全相同的代码库在使用/不使用wifi的情况下都运行良好,但其他50%的人看到了问题行为,即仅覆盖在没有wifi的情况下正确报告


我完全不知道这里会有什么问题。为什么会发生这种情况?

您能澄清一下“关闭wifi”是什么意思吗?您是否关闭接入点,或断开计算机与接入点的连接,或完全禁用计算机上的WiFi?计算机是否通过以太网连接到网络(打开或不打开WiFi)?@user2357112禁用计算机上的WiFi。这是一款新的MacBookPro,因此它是唯一的互联网来源。