У меня есть пользовательское приложение Python Flask, и я создаю его для своей встроенной цели, используя Yocto и Bitbake. У меня также есть набор тестовых примеров, которые я запускаю на своем компьютере сборки с приложением, использующим PyTest. Я бы хотел, чтобы сборка провалилась, если тесты не пройдены.
Я ищу способ выполнения этих тестов Yocto как часть моего рецепта. Пока что поиск Google (необычно) оказался пустым.
Вот то, что я реализовал до сих пор - это работает, но для этого требуется система Python3 и различные установки pip. В идеале требования должны быть встроены в Yocto, но только для хоста, а не для цели. Я еще не понял, как это сделать.
# Run the pytest test cases against the app code after it is installed
python do_run_pytest_testsuite(){
# Change to the testing directory
import os
testDir = "%s"%(d.getVar('WORKDIR', True))
os.chdir(testDir)
# Run pytest execute the test suite
from subprocess import Popen, PIPE
with open("%s/TestOutput.txt"%(testDir), "w") as testReportFile:
with Popen(['/usr/bin/python3','-m','pytest','-v','tests/test_app.py'], stdout=PIPE, bufsize=1, universal_newlines=True) as proc:
for line in proc.stdout:
testReportFile.write(line)
# Get the return code
if not proc.returncode == 0:
# Force Failure
bb.fatal("Test Cases Failed! ( %s )"%(testDir))
}
addtask run_pytest_testsuite before do_install after do_configure
Как я могу выполнить sh это автономное окружение Yocto и не устанавливать никаких зависимостей PyTest для целевой платы.