问题:
之前用pytest+allure做测试报告的时候遇到了一个问题,因为在之前需要用到pytest执行测试文件,运行的时候报错
ImportError while importing test module 'D:\PyWorkplace\pytest\csdn_test.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
D:\Python3.10\lib\importlib\__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
E ModuleNotFoundError: No module named 'pytest.csdn_test'
关键句:make sure your test modules/packages have valid Python names.
E ModuleNotFoundError: No module named 'pytest.csdn_test'
报错时文件结构:
尝试了网上查找的方法
第一种
删除__init__.py文件;无用,网上有些相同问题的帖主他们本来是没有这个py文件加上之后反而解决问题了,好像是因为没有这个文件他无法识别这是个python文件夹从而报错。
第二种
增加一个conftest.py文件,每次运行pytest前先运行conftest.py
内容如下:
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
放在同级目录下运行后报出这种错误,查了下需要放在根目录下才生效;但是尝试过后还是没有解决问题
(venv) PS D:\PyWorkplace\pytest> pytest ./csdn_test.py --alluredir=./report/
ImportError while loading conftest 'D:\PyWorkplace\pytest\conftest.py'.
ModuleNotFoundError: No module named 'pytest.conftest'
第三种(有待考察)
pytest使用的环境与python运行的环境不一致所导致
(venv) PS D:\PyWorkplace\pytest> pytest -V
pytest 7.4.3
C:\Users>python
Python 3.10.11
因为找不到两者版本对应关系,所以只能尝试下载最新版pytest
然后还是报错。。。
第四种
文件名有问题。因为pytest 执行时默认是执行指定路径下以test_开头或者以_test 结尾的文件里的测试类或者方法,默认是执行以 Test_开头的类和 test_开头的方法
所以将所有方法和类按照上述进行更改
尝试后解决问题!
大家一定要规范起名,这么点小细节后面弄出一堆问题