Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:以10为基数的int()的文本无效:';30.0';运行unittest时_Python_Unit Testing_Airflow - Fatal编程技术网

Python ValueError:以10为基数的int()的文本无效:';30.0';运行unittest时

Python ValueError:以10为基数的int()的文本无效:';30.0';运行unittest时,python,unit-testing,airflow,Python,Unit Testing,Airflow,我正在尝试运行一个以前可以运行但突然停止运行的测试,但现在我似乎在所有测试中都出现了错误,例如: 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 InjestDictDescript

我正在尝试运行一个以前可以运行但突然停止运行的测试,但现在我似乎在所有测试中都出现了错误,例如:

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)
问题的回溯细节如下所示

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'
EST/操作员/建模/语言/测试\输入测试\输入描述\操作员。py:9:in
从src.operators.modeling.language导入TestDictDescriptionOperator
src/operators/modeling/language/________.py:1:in
from.injest\u onboarded\u命令\u运算符作为injestonboardcommands运算符导入运算符
src/operators/modeling/language/injest\u onboarded\u commands\u operator.py:9:in
从airflow.models导入BaseOperator
../../../../...pyenv/versions/3.6.10/lib/python3.6/site packages/afflow/_init__.py:50:in
从airflow.models导入DAG#noqa:E402
../../../../../...pyenv/versions/3.6.10/lib/python3.6/site packages/afflow/models/_init__;.py:21:in
从airflow.models.baseoperator导入baseoperator,BaseOperatorLink#noqa:F401
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/baseoperator.py:43:in
从afflow.models.dag导入dag
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/dag.py:52:in
从afflow.models.dagbag导入dagbag
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/dagbag.py:50:in
分类数据包(基本数据包、日志混合):
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/dagbag.py:80:in-dagbag
DAGBAG\u IMPORT\u TIMEOUT=conf.getint('core','DAGBAG\u IMPORT\u TIMEOUT')
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/configuration.py:414:in-getint
返回int(self.get(节,键,**kwargs))
E ValueError:基为10的int()的文本无效:“30.0”集合失败
测试/运算符/建模/语言/测试\输入\输入\描述\运算符。py:9:in
从src.operators.modeling.language导入TestDictDescriptionOperator
src/operators/modeling/language/________.py:1:in
from.injest\u onboarded\u命令\u运算符作为injestonboardcommands运算符导入运算符
src/operators/modeling/language/injest\u onboarded\u commands\u operator.py:9:in
从airflow.models导入BaseOperator
../../../../...pyenv/versions/3.6.10/lib/python3.6/site packages/afflow/_init__.py:50:in
从airflow.models导入DAG#noqa:E402
../../../../../...pyenv/versions/3.6.10/lib/python3.6/site packages/afflow/models/_init__;.py:21:in
从airflow.models.baseoperator导入baseoperator,BaseOperatorLink#noqa:F401
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/baseoperator.py:43:in
从afflow.models.dag导入dag
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/dag.py:52:in
从afflow.models.dagbag导入dagbag
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/dagbag.py:50:in
分类数据包(基本数据包、日志混合):
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/models/dagbag.py:80:in-dagbag
DAGBAG\u IMPORT\u TIMEOUT=conf.getint('core','DAGBAG\u IMPORT\u TIMEOUT')
../../../../...pyenv/versions/3.6.10/lib/python3.6/site-packages/afflow/configuration.py:414:in-getint
返回int(self.get(节,键,**kwargs))
E ValueError:基数为10的int()的文本无效:“30.0”

唯一改变的是apache airflow。我升级到最新版本2.0,但后来意识到我需要重构部分代码,以便降级到更高版本。

配置文件中的DAGBAG\u导入\u超时已升级为浮动2.0,1.10.14则需要浮动


删除了包含cfg文件的气流,并重新安装了我在事故中安装气流2后遇到的版本,然后降级到1.10.12。解决方案是在降级后删除~/airflow并让它重新创建,因为这只是我的测试机器。

更新
airflow.cfg
文件。搜索变量
dagbag\u import\u timeout
并将其值类型更新为整数而不是浮点,从
dagbag\u import\u timeout=30.0
dagbag\u import\u timeout=30
。这应该可以正常工作。

这可能是由于安装了pytest 5.4.3造成的。看起来您有不同版本的配置文件。你能删除~/afflow/afflow.cfg文件吗?配置文件中的DAGBAG\u IMPORT\u超时已升级为2.0的float,1.10.14的float必须是float。先生,你真是个传奇!您可以执行
echo$afflow\u HOME
来确定文件夹的位置。对于那些在Windows10上使用Ubuntu的用户来说,这可能很难找到,因为它可能会出现在Windows文档中,具体取决于Airflow软件包最初的安装方式