pytest-dev / pytest

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing
https://pytest.org
MIT License
11.93k stars 2.65k forks source link

I am getting error "pytest: error: unrecognized arguments: --env" while executing tests using pytest #12242

Closed leandrowcs closed 5 months ago

leandrowcs commented 5 months ago

Command I'm trying to execute my code: pipenv run python -m pytest -k "test_it" --env stg

Error message:

$ pipenv run python -m pytest -k "test_it" --env stg
Loading .env environment variables...
ERROR: usage: __main__.py [options] [file_or_dir] [file_or_dir] [...]
__main__.py: error: unrecognized arguments: --env
  inifile: C:\Users\leandro.dasilva\Documents\python\plato-automation\pytest.ini
  rootdir: C:\Users\leandro.dasilva\Documents\python\plato-automation

Pipenv list of packages:

$ pipenv graph
Loading .env environment variables...
boto3==1.28.81
├── botocore [required: >=1.31.81,<1.32.0, installed: 1.31.81]
│   ├── jmespath [required: >=0.7.1,<2.0.0, installed: 1.0.1]
│   ├── python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.2]
│   │   └── six [required: >=1.5, installed: 1.16.0]
│   └── urllib3 [required: >=1.25.4,<2.1, installed: 1.26.18]
├── jmespath [required: >=0.7.1,<2.0.0, installed: 1.0.1]
└── s3transfer [required: >=0.7.0,<0.8.0, installed: 0.7.0]
    └── botocore [required: >=1.12.36,<2.0a.0, installed: 1.31.81]
        ├── jmespath [required: >=0.7.1,<2.0.0, installed: 1.0.1]
        ├── python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.2]
        │   └── six [required: >=1.5, installed: 1.16.0]
        └── urllib3 [required: >=1.25.4,<2.1, installed: 1.26.18]
openpyxl==3.1.2
└── et-xmlfile [required: Any, installed: 1.1.0]
oracledb==2.0.1
└── cryptography [required: >=3.2.1, installed: 41.0.5]
    └── cffi [required: >=1.12, installed: 1.16.0]
        └── pycparser [required: Any, installed: 2.21]
oscrypto==1.3.0
└── asn1crypto [required: >=1.5.1, installed: 1.5.1]
pandas==2.1.2
├── numpy [required: >=1.23.2,<2, installed: 1.26.1]
├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│   └── six [required: >=1.5, installed: 1.16.0]
├── pytz [required: >=2020.1, installed: 2023.3.post1]
└── tzdata [required: >=2022.1, installed: 2023.3]
psycopg2==2.9.9
pyarrow==15.0.0
└── numpy [required: >=1.16.6,<2, installed: 1.26.1]
pycryptodomex==3.19.0
pyodbc==5.0.1
PySocks==1.7.1
pytest-bdd==7.0.0
├── Mako [required: Any, installed: 1.3.0]
│   └── MarkupSafe [required: >=0.9.2, installed: 2.1.3]
├── parse [required: Any, installed: 1.19.1]
├── parse-type [required: Any, installed: 0.6.2]
│   ├── parse [required: >=1.18.0, installed: 1.19.1]
│   └── six [required: >=1.15, installed: 1.16.0]
├── pytest [required: >=6.2.0, installed: 7.4.3]
│   ├── colorama [required: Any, installed: 0.4.6]
│   ├── iniconfig [required: Any, installed: 2.0.0]
│   ├── packaging [required: Any, installed: 23.2]
│   └── pluggy [required: >=0.12,<2.0, installed: 1.3.0]
└── typing-extensions [required: Any, installed: 4.8.0]
pytest-html==4.1.1
├── jinja2 [required: >=3.0.0, installed: 3.1.2]
│   └── MarkupSafe [required: >=2.0, installed: 2.1.3]
├── pytest [required: >=7.0.0, installed: 7.4.3]
│   ├── colorama [required: Any, installed: 0.4.6]
│   ├── iniconfig [required: Any, installed: 2.0.0]
│   ├── packaging [required: Any, installed: 23.2]
│   └── pluggy [required: >=0.12,<2.0, installed: 1.3.0]
└── pytest-metadata [required: >=2.0.0, installed: 3.0.0]
    └── pytest [required: >=7.0.0, installed: 7.4.3]
        ├── colorama [required: Any, installed: 0.4.6]
        ├── iniconfig [required: Any, installed: 2.0.0]
        ├── packaging [required: Any, installed: 23.2]
        └── pluggy [required: >=0.12,<2.0, installed: 1.3.0]
pytest-html-reporter==0.2.9
├── Pillow [required: Any, installed: 10.1.0]
└── pytest [required: Any, installed: 7.4.3]
    ├── colorama [required: Any, installed: 0.4.6]
    ├── iniconfig [required: Any, installed: 2.0.0]
    ├── packaging [required: Any, installed: 23.2]
    └── pluggy [required: >=0.12,<2.0, installed: 1.3.0]
selenium==4.15.2
├── certifi [required: >=2021.10.8, installed: 2023.7.22]
├── trio [required: ~=0.17, installed: 0.23.1]
│   ├── attrs [required: >=20.1.0, installed: 23.1.0]
│   ├── cffi [required: >=1.14, installed: 1.16.0]
│   │   └── pycparser [required: Any, installed: 2.21]
│   ├── idna [required: Any, installed: 3.4]
│   ├── outcome [required: Any, installed: 1.3.0.post0]
│   │   └── attrs [required: >=19.2.0, installed: 23.1.0]
│   ├── sniffio [required: >=1.3.0, installed: 1.3.0]
│   └── sortedcontainers [required: Any, installed: 2.4.0]
├── trio-websocket [required: ~=0.9, installed: 0.11.1]
│   ├── trio [required: >=0.11, installed: 0.23.1]
│   │   ├── attrs [required: >=20.1.0, installed: 23.1.0]
│   │   ├── cffi [required: >=1.14, installed: 1.16.0]
│   │   │   └── pycparser [required: Any, installed: 2.21]
│   │   ├── idna [required: Any, installed: 3.4]
│   │   ├── outcome [required: Any, installed: 1.3.0.post0]
│   │   │   └── attrs [required: >=19.2.0, installed: 23.1.0]
│   │   ├── sniffio [required: >=1.3.0, installed: 1.3.0]
│   │   └── sortedcontainers [required: Any, installed: 2.4.0]
│   └── wsproto [required: >=0.14, installed: 1.2.0]
│       └── h11 [required: >=0.9.0,<1, installed: 0.14.0]
└── urllib3 [required: >=1.26,<3, installed: 1.26.18]
snappy==3.1.1
├── cypari [required: >=2.3, installed: 2.5.4]
├── decorator [required: Any, installed: 5.1.1]
├── FXrays [required: >=1.3, installed: 1.3.5]
├── ipython [required: >=5.0, installed: 8.22.1]
│   ├── colorama [required: Any, installed: 0.4.6]
│   ├── decorator [required: Any, installed: 5.1.1]
│   ├── jedi [required: >=0.16, installed: 0.19.1]
│   │   └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
│   ├── matplotlib-inline [required: Any, installed: 0.1.6]
│   │   └── traitlets [required: Any, installed: 5.14.1]
│   ├── prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43]
│   │   └── wcwidth [required: Any, installed: 0.2.13]
│   ├── pygments [required: >=2.4.0, installed: 2.17.2]
│   ├── stack-data [required: Any, installed: 0.6.3]
│   │   ├── asttokens [required: >=2.1.0, installed: 2.4.1]
│   │   │   └── six [required: >=1.12.0, installed: 1.16.0]
│   │   ├── executing [required: >=1.2.0, installed: 2.0.1]
│   │   └── pure-eval [required: Any, installed: 0.2.2]
│   └── traitlets [required: >=5.13.0, installed: 5.14.1]
├── low-index [required: >=1.2, installed: 1.2]
├── plink [required: >=2.4.2, installed: 2.4.2]
├── pypng [required: Any, installed: 0.20220715.0]
├── snappy-manifolds [required: >=1.1.2, installed: 1.2]
└── spherogram [required: >=2.2, installed: 2.2.1]
    ├── decorator [required: Any, installed: 5.1.1]
    ├── knot-floer-homology [required: >=1.2, installed: 1.2]
    ├── networkx [required: Any, installed: 3.2.1]
    └── snappy-manifolds [required: >=1.1.2, installed: 1.2]
snowflake-connector-python==3.4.0
├── asn1crypto [required: >0.24.0,<2.0.0, installed: 1.5.1]
├── certifi [required: >=2017.4.17, installed: 2023.7.22]
├── cffi [required: >=1.9,<2.0.0, installed: 1.16.0]
│   └── pycparser [required: Any, installed: 2.21]
├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
├── cryptography [required: >=3.1.0,<42.0.0, installed: 41.0.5]
│   └── cffi [required: >=1.12, installed: 1.16.0]
│       └── pycparser [required: Any, installed: 2.21]
├── filelock [required: >=3.5,<4, installed: 3.13.1]
├── idna [required: >=2.5,<4, installed: 3.4]
├── packaging [required: Any, installed: 23.2]
├── platformdirs [required: >=2.6.0,<4.0.0, installed: 3.11.0]
├── pyjwt [required: <3.0.0, installed: 2.8.0]
├── pyOpenSSL [required: >=16.2.0,<24.0.0, installed: 23.3.0]
│   └── cryptography [required: >=41.0.5,<42, installed: 41.0.5]
│       └── cffi [required: >=1.12, installed: 1.16.0]
│           └── pycparser [required: Any, installed: 2.21]
├── pytz [required: Any, installed: 2023.3.post1]
├── requests [required: <3.0.0, installed: 2.31.0]
│   ├── certifi [required: >=2017.4.17, installed: 2023.7.22]
│   ├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
│   ├── idna [required: >=2.5,<4, installed: 3.4]
│   └── urllib3 [required: >=1.21.1,<3, installed: 1.26.18]
├── sortedcontainers [required: >=2.4.0, installed: 2.4.0]
├── tomlkit [required: Any, installed: 0.12.2]
├── typing-extensions [required: >=4.3,<5, installed: 4.8.0]
└── urllib3 [required: >=1.21.1,<1.27, installed: 1.26.18]
StrEnum==0.4.15
webdriver-manager==4.0.1
├── packaging [required: Any, installed: 23.2]
├── python-dotenv [required: Any, installed: 1.0.0]
└── requests [required: Any, installed: 2.31.0]
    ├── certifi [required: >=2017.4.17, installed: 2023.7.22]
    ├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
    ├── idna [required: >=2.5,<4, installed: 3.4]
    └── urllib3 [required: >=1.21.1,<3, installed: 1.26.18]
xlutils==2.0.0
├── xlrd [required: >=0.7.2, installed: 2.0.1]
└── xlwt [required: >=0.7.4, installed: 1.3.0]

Pytest / Pipenv / Python version:

$ pipenv run python -m pytest --version
Loading .env environment variables...
pytest 7.4.3
$ pipenv --version
pipenv, version 2023.9.8
$ pipenv run python --version
Loading .env environment variables...
Python 3.11.9

My code:

# Env args
def pytest_addoption(parser):
    parser.addoption("--env", action="store", help="Environments values: qa or stg")

@pytest.fixture
def env(request):
    return request.config.getoption("--env")
The-Compiler commented 5 months ago

pytest doesn't have an --env argument and it's correctly telling you that. You might be missing a plugin needed for that argument.

The-Compiler commented 5 months ago

Ah whoops, I missed the part where you add that argument yourself. Where do you have that code?

leandrowcs commented 5 months ago

Thanks for the quick reply. It is an internal project of my work.

I'm trying to create arguments to control the execution environment of my tests.

leandrowcs commented 5 months ago

Thanks for the quick reply. It is an internal project of my work.

I'm trying to create arguments to control the execution environment of my tests.

The-Compiler commented 5 months ago

But in which file (full path ideally) is the code you've shown? How does the rest of the file tree look?

leandrowcs commented 5 months ago

C:\Users\leandro.dasilva\Documents\python\plato-automation\tests\step_defs\conftest.py

The-Compiler commented 5 months ago

It'll need to be in e.g. your root conftest.py, see the note in the docs: https://docs.pytest.org/en/8.1.x/reference/reference.html#pytest.hookspec.pytest_addoption

leandrowcs commented 5 months ago

Thank you for your support. It's working now.