简体   繁体   English

ValueError: int() 的无效文字,以 10 为基数:运行 unittest 时为“30.0”

[英]ValueError: invalid literal for int() with base 10: '30.0' when running unittest

I'm trying to run a test that was previously working but has suddenly stopped running but now i seem to get an error on all my tests eg我正在尝试运行一个以前可以运行但突然停止运行的测试,但现在我的所有测试似乎都出现错误,例如

from httmock import HTTMock
from unittest import TestCase
from unittest.mock import patch, call, mock_open, MagicMock, Mock, ANY

import os.path
import os


from src.operators import InjestDictDescriptionOperator
from airflow.hooks.base_hook import BaseHook
from airflow.hooks.postgres_hook import PostgresHook
from airflow.hooks.S3_hook import S3Hook

class TestInjestDictDescriptionOperator(TestCase):
    def setUp(self):
        # hook patches
        self.open_file_mock = patch('builtins.open').start()
        self.os_path_isdir = patch.object(os.path, 'isdir').start()
        self.os_makedirs = patch.object(os, 'makedirs').start()
        self.open_file_write_mock = self.open_file_mock.return_value.__enter__.return_value.write


        # prepare the target
        self.target = InjestDictDescriptionOperator(
            task_id='InjestDictDescriptionOperatorTest',
            sql=None,
            postgres_conn_id='test',
            aws_conn_id='s3-conn-1',
            s3_bucket_name=‘data’,
            output_path='output/path/1')

    def tearDown(self):
        patch.stopall()

    def testTmpFolderCreationIfItDoesntExist(self):
        self.os_path_isdir.return_value = False
        self.target.execute(None)
        self.os_makedirs.assert_called_with('/tmp/')

    def testTmpFolderNotCreatedIfItExists(self):
        self.os_path_isdir.return_value = True
        self.target.execute(None)
        self.os_makedirs.assert_not_called()

    def testTmpFileCreation(self):
        self.target.execute(None)
        self.open_file_mock.assert_called_with(
            '/tmp/modelling/temp.txt',
            'w+',
            encoding='utf-8')

    def testTmpFileDataDump(self):
        self.target.execute(None)
        self.open_file_write_mock.assert_has_calls(
            [ call(f"{doc['name']}\n") for doc in self.dummy_data ]
            , any_order=False)

The traceback details of the problem are问题的追溯细节是

ests/operators/modelling/language/test_injest_dict_description_operator.py:9: in <module>
    from src.operators.modelling.language import InjestDictDescriptionOperator
src/operators/modelling/language/__init__.py:1: in <module>
    from .injest_onboarded_commands_operator import Operator as InjestOnboardedCommandsOperator
src/operators/modelling/language/injest_onboarded_commands_operator.py:9: in <module>
    from airflow.models import BaseOperator
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/__init__.py:50: in <module>
    from airflow.models import DAG  # noqa: E402
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/__init__.py:21: in <module>
    from airflow.models.baseoperator import BaseOperator, BaseOperatorLink  # noqa: F401
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/baseoperator.py:43: in <module>
    from airflow.models.dag import DAG
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/dag.py:52: in <module>
    from airflow.models.dagbag import DagBag
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/dagbag.py:50: in <module>
    class DagBag(BaseDagBag, LoggingMixin):
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/dagbag.py:80: in DagBag
    DAGBAG_IMPORT_TIMEOUT = conf.getint('core', 'DAGBAG_IMPORT_TIMEOUT')
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/configuration.py:414: in getint
    return int(self.get(section, key, **kwargs))
E   ValueError: invalid literal for int() with base 10: '30.0'collection failure
tests/operators/modelling/language/test_injest_dict_description_operator.py:9: in <module>
    from src.operators.modelling.language import InjestDictDescriptionOperator
src/operators/modelling/language/__init__.py:1: in <module>
    from .injest_onboarded_commands_operator import Operator as InjestOnboardedCommandsOperator
src/operators/modelling/language/injest_onboarded_commands_operator.py:9: in <module>
    from airflow.models import BaseOperator
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/__init__.py:50: in <module>
    from airflow.models import DAG  # noqa: E402
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/__init__.py:21: in <module>
    from airflow.models.baseoperator import BaseOperator, BaseOperatorLink  # noqa: F401
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/baseoperator.py:43: in <module>
    from airflow.models.dag import DAG
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/dag.py:52: in <module>
    from airflow.models.dagbag import DagBag
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/dagbag.py:50: in <module>
    class DagBag(BaseDagBag, LoggingMixin):
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/models/dagbag.py:80: in DagBag
    DAGBAG_IMPORT_TIMEOUT = conf.getint('core', 'DAGBAG_IMPORT_TIMEOUT')
../../../../.pyenv/versions/3.6.10/lib/python3.6/site-packages/airflow/configuration.py:414: in getint
    return int(self.get(section, key, **kwargs))
E   ValueError: invalid literal for int() with base 10: '30.0'

The only thing that changed was apache-airflow.唯一改变的是 apache-airflow。 I upgraded to the latest version 2.0 but then realised i would need to refactor parts of my code so downgraded to a later version.我升级到了最新版本 2.0,但后来意识到我需要重构部分代码,因此降级到更高版本。

Happened to me after I installed Airflow 2 on accident and then downgraded to 1.10.12.在我意外安装 Airflow 2 然后降级到 1.10.12 后发生在我身上。 Solution was to remove ~/airflow after the downgrade and let it re-create since this is just my test machine.解决方案是在降级后删除 ~/airflow 并让它重新创建,因为这只是我的测试机器。

The DAGBAG_IMPORT_TIMEOUT had been upgraded in the config files to float for 2.0 and for 1.10.14 it needed to be float. DAGBAG_IMPORT_TIMEOUT 已在配置文件中升级为浮动 2.0 和 1.10.14 它需要浮动。

Deleted airflow completely including cfg files and re-installed the version删除 airflow 完全包括cfg文件并重新安装版本

Update the airflow.cfg file.更新airflow.cfg文件。 Search for the variable dagbag_import_timeout and update it's value type to integer instead of float, from dagbag_import_timeout = 30.0 to dagbag_import_timeout = 30 .搜索变量dagbag_import_timeout并将其值类型更新为 integer 而不是 float,从dagbag_import_timeout = 30.0dagbag_import_timeout = 30 This should work fine.这应该可以正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ValueError:int() 的无效文字,基数为 10: &#39; &#39; 之前工作时 - ValueError: invalid literal for int() with base 10: ' ' when it worked before ValueError: int() 以 10 为基数的无效文字:'' 询问输入时 - ValueError: invalid literal for int() with base 10: '' when asking for input 我在运行程序“ ValueError:int()的基数为10的无效文字:”时遇到此错误: - im experiencing this error when running a program “ValueError: invalid literal for int() with base 10:” ValueError:int() 的无效文字,基数为 10:&#39;26.02.2018&#39; - ValueError: invalid literal for int() with base 10: '26.02.2018' 第8行:ValueError:int()以10为底的无效文字:“&#39; - Line 8: ValueError: invalid literal for int() with base 10: ' ' ValueError:int()以10为基的无效文字:“ skip” - ValueError: invalid literal for int() with base 10: 'skip' ValueError:以10为底的int()的无效文字:&#39;&#39; - ValueError: invalid literal for int() with base 10: '' ValueError:以10为底的int()的无效文字:&#39;SOH&#39; - ValueError: invalid literal for int() with base 10: 'SOH' 错误 - ValueError:基数为10的int()的文字无效:&#39;&#39; - Error - ValueError: invalid literal for int() with base 10: ' ' / feed /处的ValueError-以10为底的int()的无效文字 - ValueError at /feed/ - invalid literal for int() with base 10
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM