我遇到了一个奇怪的情况,我写了一个测试来检查肯定会失败的“re.match”,但是在py.test中测试时会通过。在测试环境之外运行时代码按预期失败。
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
对于这种行为差异的根本原因是什么想法?