Невозможно запустить инструмент покрытия, используя встроенный python, используя опцию -m или при копировании в разные пути в Windows - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь запустить инструмент покрытия python, используя встроенный python, загруженный с https://www.python.org/ftp/python/3.6.1/python-3.6.1-embed-amd64.zip Ниже приведены шаги, которые я выполнил для запуска тестового кода с использованием модуля покрытия.

1) После загрузки python-3.6.1-embed-amd64.zip, я распаковываю файлы в D: \ some_directory \ python-3.6.1-embed-amd64

2) cd python-3.6.1-embed-amd64

3) python get-pip.py

4) python -mpip install охват

5) python-3.6.1-embed-amd64 \ python36._pth изменен на

python36.zip
Lib\site-packages
.

# Uncomment to run site.main() automatically
#import site

6) Если используется интернет-прокси, используйте следующую команду

SET HTTP_PROXY=http://username:password@proxy_ip:proxy_port

7) python -mpip install покрытие

Создание тестовых файлов

Файл module_prog.py выглядит следующим образом

# -*- coding: utf-8 -*-
"""
    Dummy method for testing
"""


def method_to_tested() -> None:
    """
    Method To be tested
    """
    print("Called method to be tested")

Файл test_module.py выглядит следующим образом

""" Unit test script for testing File : test_module.py
"""

import unittest
from module_prog import method_to_tested


class TestMethods(unittest.TestCase):
    """ Testing the methods """

    def test_method_to_tested(self):
        method_to_tested()

if __name__ == "__main__":
    unittest.main(warnings='ignore')

8) Я запускаю следующее

D:\some_directory\python-3.6.1-embed-amd64>python test_module.py

Called method to be tested
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

9) Но если я запускаю инструкцию, указанную ниже, используя converage, я получаю следующую ошибку:

D:\some_directory\python-3.6.1-embed-amd64>python -mcoverage run test_module.py

Traceback (most recent call last):
  File "test_module.py", line 4, in <module>
    import unittest
ModuleNotFoundError: No module named 'unittest'

Если я запускаю команду

  Scripts\converage.exe run test_module.py

Затем покрытие запускается успешно, но если я переместлю встроенный питон в другой каталог и попытаюсь выполнить ту же команду, что и выше, я получу следующую ошибку

D:\some_other_directory\python-3.6.1-embed-amd64>Scripts\coverage.exe run test_module.py

Fatal error in launcher: Unable to create process using 
'"d:\some_directory\python-3.6.1-embed-amd64\python.exe" "D:\some_other_directory\python-3.6.1-embed-amd64\Scripts\coverage.exe" run test_module.py'

Как я могузаставить покрытие работать как модуль python

...