#python #json #pytest #tox
Вопрос:
test_pytest.py находится в каталоге тестов и содержит автоматизированный код (ниже приведены методы) для тестирования рабочего процесса машинного обучения.
def test_workflow(caplog,test_name,test_params,test_step):,
def test_upload_and_import_data(input_params, output_params,):,
def test_feature_eng(input_params, output_params):,
def test_auto_training(input_params, output_params, problem_type):,
def test_get_prediction(input_params, output_params):
def test_retraining(response):
def delete_ai_service():
Каталог QA_test находится внутри test_data->тесты.
Он содержит файлы json, предоставляющие входные данные и ожидаемые выходные данные для указанных выше методов для различных наборов данных.
В качестве примера,
{
"Car_prices dataset" : [
{
"dataImport": {
"input": {
"test_filename": "carprices.csv",
"file_location": "AWS"
},
"expectedOutput": {
"result" : "success"
}
}
},
{
"featureEngineering": {
"input": {
"column": "MSRP",
"waitTime": 60,
"problemType" : "auto"
},
"expectedOutput": {
"result" : "Completed"
}
}
},
'
'
'
]
}
Это существующий файл tox.
[tox]
envlist = py38
[testenv]
deps =
pytest
pytest-html
pytest-sugar
pytest-logger
allure-pytest
pytest-xdist
pytest_steps
datetime
oauth2client
gspread
aiclub
commands =
pytest -s -v -k _workflow --html=test_report.html --alluredir=allure-results/ -n auto --dist=loadfile
allure serve allure-results
В настоящее время, когда я набираю tox в терминале, он запускает весь набор тестов, выполняющий весь рабочий процесс для всех наборов данных.
Как я могу запустить рабочий процесс тестирования только для тестовых наборов(файлов json) в каталоге QA_test?
Ответ №1:
Вам нужно использовать posargs
функцию tox
— это позволяет вам указывать конкретную команду всякий раз, когда вы хотите.
Вы используете pytest
его в качестве тестируемого. Этот -k
параметр определяет набор тестов, которые вы хотите выполнить.
Вместо того , чтобы жестко кодировать его _workflow
, вам нужно сделать что-то вроде
commands =
pytest -s -v {posargs:-k _workflow} ...
Затем вы можете запустить один тест с помощью
tox -- -k singleTest
Если вы просто запускаете tox
, используется функция по умолчанию ( -k _workflow
).
Все, что стоит за двойным тире, передается в команду — в данном случае в pytest
.
Эта tox
функция posargs
задокументирована по адресу https://tox.readthedocs.io/en/latest/example/general.html
Для pytest
того, чтобы взглянуть на https://docs.pytest.org/en/6.2.x/usage.html#specifying-tests-selecting-tests
Комментарии:
1. tox.readthedocs.io/en/latest/…
2. ОШИБКА: Ошибка вызова для команды ‘D:QAtest-frameworkpython-client.toxpy38Scriptspytest. EXE’ -s -v -k QA_tests —html=test_report.html —alluredir=allure-результаты/ -n авто —dist=загрузочный файл (выход с кодом 5)
3. @J. G. когда я использовал «pytest-s-v {параметры:-k _workflow} —html=test_report.html —alluredir=привлекательные результаты/ -n auto —dist=загрузочный файл» и запуск «tox — -k QA_tests» в терминале выдал вышеуказанную ошибку .
4. @ShelomiPriskila К сожалению, я не вижу очевидной проблемы. Когда я сталкиваюсь с подобными проблемами, я стараюсь сделать команду как можно более простой, убедиться, что она работает, а затем добавить другие параметры обратно, один за другим. Может быть, начнем с
commands = commands = pytest {posargs:-k _workflow}
этого …5. @J. G. Для команды «pytest {posargs:-k _workflow}» также она выдает ту же ошибку вызова