如何以编程方式将 python 包中的变量更改为 运行 测试
how to programmatically change a variable in a python package to run test
我有一个类似这样的项目结构。我想编写一个测试,以编程方式更改 myPackage/version.py 中的 version 变量,并在 tests/unit/test_release.py.
中编写一个测试
├── myPackage
│ ├── __init__.py
│ ├── root.py
│ └── version.py
└── tests
└── unit
└── test_release.py
cat myPackage/init.py
from .version import __version__
cat myPackage/root.py
from .version import __version__
def printFunc():
return __version__
if __name__ == "__main__":
print(printFunc())
cat myPackage/version.py
__version__ = '5.7.11'
cat tests/unit/test_release.py
import sys
sys.path.insert(0, "/Users/username/myfolder")
from myPackage import root, version
import unittest
class TestHelp(unittest.TestCase):
def setUp(self):
pass
def test_version(self):
version.__version__ = '7.8.19'
new_version = root.printFunc()
assert new_version == '7.8.19'
最好的方法是什么?
我暂时试过了。
from importlib import reload
class TestHelp(unittest.TestCase):
def setUp(self):
pass
def test_version(self):
myPackage.version.__version__ = '7.8.19'
myPackage.root = reload(myPackage.root)
new_version = myPackage.root.printFunc()
assert new_version == '7.8.19'
我有一个类似这样的项目结构。我想编写一个测试,以编程方式更改 myPackage/version.py 中的 version 变量,并在 tests/unit/test_release.py.
中编写一个测试├── myPackage
│ ├── __init__.py
│ ├── root.py
│ └── version.py
└── tests
└── unit
└── test_release.py
cat myPackage/init.py
from .version import __version__
cat myPackage/root.py
from .version import __version__
def printFunc():
return __version__
if __name__ == "__main__":
print(printFunc())
cat myPackage/version.py
__version__ = '5.7.11'
cat tests/unit/test_release.py
import sys
sys.path.insert(0, "/Users/username/myfolder")
from myPackage import root, version
import unittest
class TestHelp(unittest.TestCase):
def setUp(self):
pass
def test_version(self):
version.__version__ = '7.8.19'
new_version = root.printFunc()
assert new_version == '7.8.19'
最好的方法是什么?
我暂时试过了。
from importlib import reload
class TestHelp(unittest.TestCase):
def setUp(self):
pass
def test_version(self):
myPackage.version.__version__ = '7.8.19'
myPackage.root = reload(myPackage.root)
new_version = myPackage.root.printFunc()
assert new_version == '7.8.19'