为什么“re.match”行为会在测试时发生变化?

时间:2018-04-20 14:46:31

标签: python regex python-2.7 pytest

我遇到了一个奇怪的情况,我写了一个测试来检查肯定会失败的“re.match”,但是在py.test中测试时会通过。在测试环境之外运行时代码按预期失败。

  • 操作系统:Ubuntu 16.04
  • Python:2.7.12
  • pytest:3.5.0

regex_code.py

import re
import sys


def main():
    regex = re.compile(r'tests\.(test_\w+)\.?(Test\w+)?$')

    input_text = 'test.tests.test_default'

    if regex.match(input_text):
        print('Pass')
        return 0
    else:
        print('Fail')
        return 1


if __name__ == "__main__":
    sys.exit(main())

test_regex_code.py

import pytest
from regex_code import main


def test_main():
    assert 1 == main()

当我从命令行运行 regex_code.py 时,我得到以下输出:

$ python regex_code.py

Fail

Process finished with exit code 1

当我运行 test_regex_code.py 测试套件时,我得到以下输出:

$ pytest test_regex_code.py

============================= test session starts ==============================
platform linux2 -- Python 2.7.12, pytest-3.5.0, py-1.5.3, pluggy-0.6.0
rootdir: /mnt/c/Users/rackspace/code/dummy, inifile:
plugins: helpers-namespace-2017.11.11, flake8dir-1.2.0
collected 1 item                                                               

test_regex_code.py .Fail
                                                     [100%]

=========================== 1 passed in 0.03 seconds ===========================
Process finished with exit code 0

对于这种行为差异的根本原因是什么想法?

0 个答案:

没有答案