每天努力一点点,坚持下去 ------ 博客首页

报错解决:AttributeError: 'TestGeApi' object has no attribute 'client'

代码如下:

import unittest

class TestGeApi(unittest.TestCase):

    @classmethod
    def setUpclass(cls) -> None:
        cls.client = GovernmentApiClient(
            GovernmentData.host, GovernmentData.is_check_db, GovernmentData.sql_cfg
        )

    def test_re_pay(self):
        result = GovernmentApiClient().re_pay()
        assert result['code'] == 200, '接口请求失败,code不为200'

        if self.client.check_db:
            platformOrderNo = result['data']['platformOrderNo']  # platformOrderNo=LO20220829000000036
            exe_sql = f"select * from repay_plan WHERE loan_order_no='{platformOrderNo}'"
            db_res = self.client.mysql.exec_sql_query(exe_sql)
            # 校验请求数据和数据库中一致
            assert len(db_res) == 1, f"数据库应只存在一条唯一的数据: {db_res}"

if __name__ == '__main__':
    pytest.main(['test_ge.py'])

报错如下:

test_ge.py:24 (TestGeApi.test_re_pay)
self = <test_ge.TestGeApi testMethod=test_re_pay>

    def test_re_pay(self):
        result = GovernmentApiClient().re_pay()
        assert result['code'] == 200, '接口请求失败,code不为200'
    
>       if self.client.check_db:
E       AttributeError: 'TestGeApi' object has no attribute 'client'

 分析原因:

  • 在setUpclass中,第一行加上print后执行,是没有打印出print信息
  • 断点调试,执行时只是setUpclass了函数名,函数内的内容并没有执行
  • 经过百度搜索是不是函数名与其他的函数名冲突,也不是
  • 继续看百度搜索,函数名是不是拼错了,看了下发现字母没拼错,是setUpclass的首字母都需要大写,而class中的c没有大写,更改成大写C,运行正常了

 

posted @ 2022-09-13 17:36  他还在坚持嘛  阅读(349)  评论(0)    收藏  举报