如何以编程方式将 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'