Ошибка выхода из Pytest, код 1 (действия github)

У меня есть репозиторий github с файлом Test_app.py. Я запускаю pytest для файла в действиях github и продолжаю получать сообщение об ошибке: E botocore.exceptions.NoRegionError: You must specify a region.

Затем я указываю регион в своем файле как: dynamodb = boto3.resource('dynamodb', region_name= 'eu-west-2'). И получаю следующую ошибку при выполнении pytest:

platform win32 -- Python 3.8.6, pytest-6.2.0, py-1.10.0, pluggy-0.13.1
rootdir: D:\a\cloudresumechallenge-BackEnd\cloudresumechallenge-BackEnd
collected 0 items

============================ no tests ran in 0.31s ============================
Error: Process completed with exit code 1. 

Это мой лямбда-код:

import boto3
import json
dynamodb = boto3.resource('dynamodb', region_name= 'eu-west-2')
table= dynamodb.Table('zacresumetable2')

def lambda_handler(event, context):
    response= table.update_item(
    Key= {'URL': 'zacresume.com'},
    UpdateExpression= "SET visits = visits + :increase",
    ExpressionAttributeValues= {':increase': 1},
    ReturnValues= "UPDATED_NEW"
)
    return {'statusCode': 200,
            'body': json.dumps('visitsUpdated'),
            'headers': {'Content-Type': 'application/json'}}
print("UPDATING ITEM")
print("response") 

и это рабочий процесс для pytest:

name: Python package

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: windows-latest
    strategy:
      matrix:
        python-version: ['3.8']

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@main
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install flake8 pytest
    - name: Install boto3
      run:  pip3 install boto3
    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    - name: Test with pytest
      run: |
        pip install pytest       
        pytest

структура папок САМПАПКА -.aws-сэм --строить --build.toml -samconfig.toml -шаблон -лямбда --требования --Test_app
образец теста:

Requirement already satisfied: pytest in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (6.2.0)
Requirement already satisfied: toml in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (0.10.2)
Requirement already satisfied: attrs>=19.2.0 in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (20.3.0)
Requirement already satisfied: colorama in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (0.4.4)
Requirement already satisfied: iniconfig in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (1.1.1)
Requirement already satisfied: pluggy<1.0.0a1,>=0.12 in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (0.13.1)
Requirement already satisfied: packaging in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (20.8)
Requirement already satisfied: py>=1.8.2 in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (1.10.0)
Requirement already satisfied: atomicwrites>=1.0 in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from pytest) (1.4.0)
Requirement already satisfied: pyparsing>=2.0.2 in c:\hostedtoolcache\windows\python\3.8.6\x64\lib\site-packages (from packaging->pytest) (2.4.7)
============================= test session starts =============================
platform win32 -- Python 3.8.6, pytest-6.2.0, py-1.10.0, pluggy-0.13.1
rootdir: D:\a\cloudresumechallenge-BackEnd\cloudresumechallenge-BackEnd
collected 0 items

============================ no tests ran in 0.31s ============================
Error: Process completed with exit code 1.```    

Как выглядит ваша структура папок? Сколько у вас тестов? Не могли бы вы предоставить образец тестового примера?

Raguel 15.12.2020 12:19
collected 0 items означает, что, скорее всего, у вас нет тестов. Pytest рассматривает только функции, имя которых начинается с test_, или классы, имя которых начинается с Test, и имеют методы с именем, начинающимся с test_. Например, lambda_handler() не является тестом и будет пропущен.
hoefling 15.12.2020 13:11

Кстати, ваш рабочий процесс действий GH запутан - иногда используется python -m pip, иногда просто pip, а иногда pip3, а также pytest устанавливается дважды. Лучше выберите условность и придерживайтесь ее, чтобы избежать непонятных ошибок.

hoefling 15.12.2020 13:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
2 541
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, вы должны убедиться, что ваши тестовые случаи начинаются с test_ из приведенных данных мне кажется, что вы не правильно настроили тесты. Например, это правильная структура для вашего приложения.

  • Мое приложение/
    • запустить.py
    • тесты/
      • test_function_1.py

Внутри test_function_1.py у вас должно быть:

# Just for the sake of the example
def test_func_case_1():
    assert True
def test_func_case_2():
    assert 1 == 1

Проверьте этот код и скажите, помог ли он вам.

Другие вопросы по теме